0
点赞
收藏
分享

微信扫一扫

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, 还不熟悉


举报

相关推荐

0 条评论