如何克服 PyTorch 张量绘图问题?
How can I overcome PyTorch Tensor plotting problem?
我是 PyTorch 的新用户,这是我正在玩的代码。
epochs=20 # train for this number of epochs
losses=[] #to keep track on losses
for i in range(epochs):
i+=1 #counter
y_pred=model(cat_train,con_train)
loss=torch.sqrt(criterion(y_pred,y_train))
losses.append(loss) # append loss values
if i%10==1: # print out our progress
print(f'epoch: {i} loss is {loss}')
# back propagation
optimizer.zero_grad() # find the zero gradient
loss.backward() #move backward
optimizer.step()
plt.plot(range(epochs),losses)
它给了我以下错误:
RuntimeError: Can't call numpy() on Tensor that requires grad. Use tensor.detach().numpy() instead.
我知道问题与以下行的损失类型有关:
tensor(3.6168, grad_fn=<SqrtBackward0>)
你能建议我如何获取第一列(该张量的数值)并使其可绘制 e.i。不是张量的数组。
您可以使用 torch.Tensor.item
.
所以,替换语句
losses.append(loss)
与
losses.append(loss.item())
我是 PyTorch 的新用户,这是我正在玩的代码。
epochs=20 # train for this number of epochs
losses=[] #to keep track on losses
for i in range(epochs):
i+=1 #counter
y_pred=model(cat_train,con_train)
loss=torch.sqrt(criterion(y_pred,y_train))
losses.append(loss) # append loss values
if i%10==1: # print out our progress
print(f'epoch: {i} loss is {loss}')
# back propagation
optimizer.zero_grad() # find the zero gradient
loss.backward() #move backward
optimizer.step()
plt.plot(range(epochs),losses)
它给了我以下错误:
RuntimeError: Can't call numpy() on Tensor that requires grad. Use tensor.detach().numpy() instead.
我知道问题与以下行的损失类型有关:
tensor(3.6168, grad_fn=<SqrtBackward0>)
你能建议我如何获取第一列(该张量的数值)并使其可绘制 e.i。不是张量的数组。
您可以使用 torch.Tensor.item
.
所以,替换语句
losses.append(loss)
与
losses.append(loss.item())