项目场景:
深度学习项目中,对神经网络进行编层。出现
ValueError: optimizer got an empty parameter list
问题描述:
ValueError: optimizer got an empty parameter list!
一定要具体问题具体分析。
先直接定位出错代码层,
从出错代码层可以直接看到没有self传参
class Classifier(nn.Module):
def __init__(self):
super(Classifier, self).__init__()
postion_embedding = Positional_Encoding(embed, pad_size, dropout, device)
encoder = Encoder(dim_model, num_head, hidden, dropout)
encoders = nn.ModuleList([
copy.deepcopy(self.encoder)
for _ in range(num_encoder)])
原因分析:
非常简单,没有正确定义网络,导致模型收不到参数。
解决方案:
将网络各层加上self.前缀,让模型能够正常接收参数。
class Classifier(nn.Module):
def __init__(self):
super(Classifier, self).__init__()
self.postion_embedding = Positional_Encoding(embed, pad_size, dropout, device)
self.encoder = Encoder(dim_model, num_head, hidden, dropout)
self.encoders = nn.ModuleList([
copy.deepcopy(self.encoder)
for _ in range(num_encoder)])

本文针对深度学习项目中出现的神经网络编层错误——ValueError: optimizergotanemptyparameterlist进行了详细解析。该问题源于网络定义不正确,导致模型无法接收参数。通过调整网络各层定义,为各层添加self.前缀,成功解决了问题。
7319

被折叠的 条评论
为什么被折叠?



