【发布时间】:2019-12-13 16:52:26
【问题描述】:
我正在做一些计算,并想通过使用 Pytorch 来优化它的参数。我没有定义神经网络,所以没有层和类似的东西。只是一个简单的计算序列。我使用 torch.nn.Module 能够使用 Pytorch 的优化器。
我的班级看起来像这样:
class XTransformer(torch.nn.Module):
def __init__(self, x):
super(ReLUTransformer, self).__init__()
self.x = x
def funky_function(self, m, c):
# do some computations
m = self.x * 2 - m + c
return m, c
def forward(self, m, c):
m, c = self.funky_function(m, c)
return m, c
稍后我定义并尝试优化这个参数 x 像这样:
x = torch.autograd.Variable(x, requires_grad=True)
model = XTransformer(x)
optimizer = torch.optim.SGD(model.parameters(), lr=1e-3)
m, c = smt
loss = loss_func()
for t in range(100):
m , c = model(m, c)
l = loss(m, true)
optimizer.zero_grad()
l.backward()
optimizer.step()
我不知道该怎么办。我收到“ValueError:优化器得到一个空的参数列表”错误。当我只是将 [x] 作为参数提供给优化器时,它不会为我更新和更改 x。我该怎么办?
【问题讨论】:
标签: python machine-learning optimization pytorch