程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ValueError: 优化器得到一个空的参数列表。这是在 PyTorch 中创建神经网络的有效方法吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决ValueError: 优化器得到一个空的参数列表。这是在 PyTorch 中创建神经网络的有效方法吗??

开发过程中遇到ValueError: 优化器得到一个空的参数列表。这是在 PyTorch 中创建神经网络的有效方法吗?的问题如何解决?下面主要结合日常开发的经验,给出你关于ValueError: 优化器得到一个空的参数列表。这是在 PyTorch 中创建神经网络的有效方法吗?的解决方法建议,希望对你解决ValueError: 优化器得到一个空的参数列表。这是在 PyTorch 中创建神经网络的有效方法吗?有所启发或帮助;

我一直在尝试为一个项目实现 SRGAN,但是当我尝试为我的生成器创建优化器时,我遇到了错误:@H_419_1@

ValueError: optimizer got an empty parameter List. 

我检查了我的参数,它们确实是一个空列表,问题是我不知道如何访问这些参数,当我实现其他网络架构时,我没有遇到这样的问题。@H_419_1@

我认为由于我缺乏框架经验,我在创建生成器类时可能会搞砸,所以我在下面包含了代码片段。@H_419_1@

class Generator(nn.ModulE):
  def __init__(self,in_chAnnels,out_chAnnels):
    super(Generator,self).__init__()
    self.in_chAnnels = in_chAnnels
    self.out_chAnnels = out_chAnnels

  @staticmethod
  def block(in_chAnnels,out_chAnnels,kernel_size=3,padding=1):
    return nn.Sequential(
        nn.Conv2d(in_chAnnels,kernel_size,padding=padding,bias=falsE),nn.batchnorm2d(out_chAnnels),nn.PReLU()
    )
  
  @staticmethod
  def inpu@R_801_11164@lock(in_chAnnels,kernel_size=9,padding=4):
    return nn.Sequential(
        nn.Conv2d(in_chAnnels,nn.PReLU()
    )

  @staticmethod
  def outpu@R_801_11164@lock(in_chAnnels,nn.PixelShuffle(2),nn.PReLU()
    )

  def forWARD(self,X):
    block_in = self.inpu@R_801_11164@lock(self.in_chAnnels,self.out_chAnnels)(X)
    block1 = T.add(self.block(self.out_chAnnels,self.out_chAnnels)(block_in),block_in)
    block2 = T.add(self.block(self.out_chAnnels,self.out_chAnnels)(block1),block1)
    block3 = T.add(self.block(self.out_chAnnels,self.out_chAnnels)(block2),block2)
    block4 = T.add(self.block(self.out_chAnnels,self.out_chAnnels)(block3),block3)
    block_brIDge = T.add(block4,block_in)
    block5 = self.outpu@R_801_11164@lock(self.out_chAnnels,self.out_chAnnels * 4)(block_brIDgE)
    block6 = self.outpu@R_801_11164@lock(self.out_chAnnels,self.out_chAnnels * 4)(block5)
    _output = nn.Conv2d(self.out_chAnnels,self.in_chAnnels,9,padding=4,bias=falsE)(block6)
    return _output

解决方法

您必须像这样定义您计划在 __init__ 中使用的层:

class Generator(nn.ModulE):
  def __init__(self,in_chAnnels,out_chAnnels):
    super(Generator,self).__init__()
    self.in_chAnnels = in_chAnnels
    self.out_chAnnels = out_chAnnels
    self.conv1 = nn.Conv2d(in_chAnnels,out_chAnnels,kernel_size=9,padding=4,bias=falsE)
    self.conv2 = nn.Conv2d(out_chAnnels,kernel_size=3,padding=1,bias=falsE)
    self.conv3 = nn.Conv2d(out_chAnnels,out_chAnnels * 4,bias=falsE)
    self.prelu = nn.PReLU()
    self.batchnorm = nn.batchNorm2d(out_chAnnels)
    self.pixshuff = nn.PixelShuffle(2)
    self.output = nn.Conv2d(out_chAnnels,bias=falsE) 


  def block(self):
    return nn.Sequential(
        self.conv2,self.batchnorm,self.prelu,)
  
  def inpu@R_801_11164@lock(self):
    return nn.Sequential(
        self.conv1,)

  def outpu@R_801_11164@lock(self):
    return nn.Sequential(
        self.conv3,self.pixshuff,self.prelu
    )

  def forWARD(self,X):
    block_in = self.inpu@R_801_11164@lock()(X)
    block1 = T.add(self.block()(block_in),block_in)
    block2 = T.add(self.block()(block1),block1)
    block3 = T.add(self.block()(block2),block2)
    block4 = T.add(self.block()(block3),block3)
    block_bridge = T.add(block4,block_in)
    block5 = self.outpu@R_801_11164@lock()(block_bridgE)
    block6 = self.outpu@R_801_11164@lock()(block5)
    output = self.output(block6)
    return output

大佬总结

以上是大佬教程为你收集整理的ValueError: 优化器得到一个空的参数列表。这是在 PyTorch 中创建神经网络的有效方法吗?全部内容,希望文章能够帮你解决ValueError: 优化器得到一个空的参数列表。这是在 PyTorch 中创建神经网络的有效方法吗?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:ValueError: