大佬教程收集整理的这篇文章主要介绍了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,请注明来意。