代碼在 loss.backward() 中給出錯誤錯誤是: untimeError: element 0 of tensors does not require 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()
uj5u.com熱心網友回復:
y_ = (y_>0.5).float()
有一個零梯度,直覺上是因為“引數的微小變化導致值絕對沒有變化(想象一下y_微小的 epsilon 變化,它不會影響y_.
uj5u.com熱心網友回復:
使用 OP 在評論中提供的附加資訊,此處的正確方法只是洗掉該行
y_ = (y_>0.5).float()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/365123.html
