如何克服 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())