我有這個變異自動編碼器,我想用Adam來做它的優化器,但它有這樣的錯誤,我不知道這里有什么問題
class VAE(nn.Module)。
def __init__(self)。
super().__init__()
#encoder[/span]。
self.enc = nn.Sequential(
nn.Linear(1200, 786)。
nn.ReLU()。
nn.Flatten()
)
self.mean = nn.Linear(1200, 2)
self.log = nn.Linear(1200, 2)
#decoder[/span]。
self.dec = nn.Sequential(
nn.Linear(2, 1200) 。
nn.ReLU()。
)
def param(self, mu, Log)。
eps = torch.randn(2, 1200)
z = mu (eps * torch.exp(Log * 0.5)
return z
def forward(self, x)。
x = self.enc(x)
mu , log = self.mean(x), self.log(x)
z = self.param(mu, log)
x = self.dec(z)
return x, mu, log
模型 = VAE()
optim = torch.optim.Adam(model.param, lr=0.01)
criterion = nn.CrossEntropyLoss()
而這里是錯誤的
Traceback (most recent call last):
檔案 "C:UserskhashayarPycharmProjectspythonProject2VAE.py", 行 40, in < module>
optim = torch.optim.Adam(model.param, lr=0.01)
檔案 "C:Userskhashayaranaconda3envsdeeplearninglibsite-packages orchoptimadam.py", line 48, in __init__
super(Adam, self).__init__(params, defaults)
檔案 "C:Userskhashayaranaconda3envsdeeplearninglibsite-packages orchoptimoptimizer.py", line 47, in __init__
param_groups = list(params)
型別錯誤。'method' object is not iterable
我怎樣才能解決這個問題呢?
uj5u.com熱心網友回復:
問題可能出在model.param。
param是一個方法,正如錯誤中寫的:"'方法'物件不可迭代"。優化器應該接收模型引數,而不是模型類的方法 "param"。
嘗試將optim = torch.optim.Adam(model.param, lr=0.01) 轉換為optim = torch.optim.Adam(model.parameters(), lr=0.01)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/329656.html
標籤:
上一篇:變數沒有被更新,功能重復
下一篇:根據訂單狀態更新列
