RuntimeError: Can't call numpy() on Variable that requires grad. Use var.detach().numpy() instead

welcome to my blog

问题描述

我想将pytorch的计算结果赋值给numpy array, S[i, v] = torch.div(row_res, row_sum), 其中S是numpy array, 结果报错RuntimeError: Can’t call numpy() on Variable that requires grad. Use var.detach().numpy() instead, 意思是: 需要求导的变量无法调用numpy()方法

解决方法

既然报错信息说需要求导的变量无法调用numpy()方法, 那就将变量变为不需要求导的即可, 调用detach()方法即可使得变量不需要求导, 重新执行S[i, v] = torch.div(row_res, row_sum).detach(), 不再报错, 成功解决

上面的解决方法适用于不求导的变量, 如果变量需要求导呢?
另一种解决办法, 将S转成Tensor, 这样就不用在numpy array和Tensor中来回转换了, 同时也能指定变量是否需要求导
刚上手pytorch, 还不熟悉

发布了489 篇原创文章 · 获赞 101 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/littlehaes/article/details/103801007
今日推荐