【发布时间】:2021-12-31 12:32:35
【问题描述】:
代码在 loss.backward() 中给出错误 错误是: untimeError:张量的元素 0 不需要 grad 并且没有 grad_fn
for epoch in range(N_EPOCHS):
model.train()
for i,(im1, im2, labels) in enumerate(train_dl):
i1 = torch.flatten(im1,1)
i2 = torch.flatten(im2,1)
inp = torch.cat([i1,i2],1)
b_x = Variable(inp) # batch x
b_y = Variable(labels) # batch y
y_ = model(b_x).squeeze()
y_ = (y_>0.5).float()
print(y_)
print(l)
loss = criterion(y_,b_y)
print(loss.item())
loss.backward()
optimizer.step()
【问题讨论】:
-
y_ > 0.5 -
实际上,我给输入和输出连接的 2 个扁平图像是它们是否属于同一个人。
-
这就是我做阈值处理的原因。
-
y_的.shape是什么?criterion是什么? -
y_ 是 [100,1] 张量,标签是 [100] 大小张量,因此我挤压了 y_,我删除了 y_ = (y_>0.5) 并删除了错误。但我的数据在第一批并没有过拟合
标签: machine-learning neural-network pytorch