【发布时间】:2021-10-04 07:02:30
【问题描述】:
我正在尝试使用 Adam 优化器来获取神经网络之外的某些值。我的技术不起作用,所以我创建了一个简单的例子来看看它是否有效:
a = np.array([[0.0,1.0,2.0,3.0,4.0], [0.0,1.0,2.0,3.0,4.0]])
b = np.array([[0.1,0.2,0.0,0.0,0.0], [0.0,0.5,0.0,0.0,0.0]])
a = torch.from_numpy(a)
b = torch.from_numpy(b)
a.requires_grad = True
b.requires_grad = True
optimizer = torch.optim.Adam(
[b],
lr=0.01,
weight_decay=0.001
)
iterations = 200
for i in range(iterations ):
loss = torch.sqrt(((a.detach() - b.detach()) ** 2).sum(1)).mean()
loss.requires_grad = True
optimizer.zero_grad()
loss.backward()
optimizer.step()
if i % 10 == 0:
print(b)
print("loss:", loss)
我的直觉是 b 应该尽可能接近 a 以减少损失。但是我发现 b 的任何值都没有变化,并且 loss 保持完全相同。我在这里想念什么?谢谢。
【问题讨论】:
标签: machine-learning deep-learning pytorch adam