深度学习遇到的问题③: Can‘t call numpy() on Tensor that requires grad. Use tensor.detach().numpy() instead.

问题描述:

在模型训练过程的可视化中:

深度学习遇到的问题③: Can‘t call numpy() on Tensor that requires grad. Use tensor.detach().numpy() instead._第1张图片

 

运行出现以下错误:Can't call numpy() on Tensor that requires grad. Use tensor.detach().numpy() instead.

 

 问题分析:

 张量Train_loss_all本身带有梯度,

深度学习遇到的问题③: Can‘t call numpy() on Tensor that requires grad. Use tensor.detach().numpy() instead._第2张图片

直接将其转换为numpy数据将破坏计算图,因此numpy拒绝进行数据转换.、故在变量转换之前添加detach()调用。

 解决办法:

将张量Train_loss_all,Test_loss_all自行转化为numpy数组。代码:
train_loss_all_np=[]
test_loss_all_np=[]
for i in range(30):
    train_loss_all_np.append(train_loss_all[i].detach().numpy())
    test_loss_all_np.append(test_loss_all[i].detach().numpy())

并将标注那两行修改为
plt.plot(train_loss_all_np,"ro-",label="Train loss")
plt.plot(test_loss_all_np,"bs-",label="Test loss")

即可实现模型训练过程的可视化

深度学习遇到的问题③: Can‘t call numpy() on Tensor that requires grad. Use tensor.detach().numpy() instead._第3张图片

 

你可能感兴趣的:(numpy,深度学习,python)