我使用python3.8,Py手电突然报告了一个错误优化器TypeError,但该程序在两周前仍在运行。
net = Net(num_classes=7)
net.to(device)
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(net.parameters(), lr=1e-4)
似乎net.parameters()不能返回正确的结果?
Traceback (most recent call last):
File "C:/Users/usr/Desktop/jaffeAttention/jaffe.py", line 190, in <module>
main()
File "C:/Users/usr/Desktop/jaffeAttention/jaffe.py", line 87, in main
optimizer = optim.Adam(net.parameters(), lr=1e-4)
TypeError: 'collections.OrderedDict' object is not callable
发布于 2022-06-01 07:46:48
您会得到错误,因为net.parameters
是一个OrderedDict
,然后尝试用net.parameters()
调用它,但这是不可能的。所以你犯了个错误。
要找出这一点,可以尝试以下命令
net = Net(num_classes=7)
net.to(device)
criterion = nn.CrossEntropyLoss()
params= net.parameters
print(type(params)) # verify this is indeed an OrderedDict
optimizer = optim.Adam(params, lr=1e-4) # notice there is no () when passing the params to Adam
您可以在python文档中阅读有关OrderedDict的内容。https://docs.python.org/3/library/collections.html#collections.OrderedDict
https://stackoverflow.com/questions/72457671
复制相似问题