前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pytorch: 常见bug与debug

pytorch: 常见bug与debug

作者头像
ke1th
发布2018-01-02 11:50:46
1.5K0
发布2018-01-02 11:50:46
举报
文章被收录于专栏:漫漫深度学习路

本博文用来记录自己的 pytorch 踩坑过程,虽然 pytorch 命令式编程,声称容易 debug,可是 代码给出的错误提示可是令人相当头疼,所以在本文中记录一下在编写 pytorch 代码过程中碰到的 坑,和如何 填坑。

  • TypeError: ××× received an invalid combination of arguments 如果检查过了数据类型的正确性之后(float32, int) 。下一步要关心的就是 op 操作的两个 Variable/Tensor 是不是在同一个 设备上 ,如果一个在 cpu 上,一个在 gpu 上就有可能会报错
  • 注意 op 的参数要求,有些是 要求 Tensor 有些 是要求 Variable ,有些是 都可以。
  • 当需要 求梯度时,一个 op 的两个输入都必须是要 Variable:
代码语言:javascript
复制
# 这段代码,如果 requires_grad=False,  a 是 Tensor,则是没错的
# 但是 requires_grad=True, a 是 Tensor,则会报错
# 这时的报错信息是 
# save_for_backward can only save input or output tensors, but argument 0 doesn't satisfy this condition
# requires_grad=True,  a是 Variable, 则不会报错
import torch
from torch.autograd import Variable

v1 = Variable(torch.FloatTensor([1., 2., 3.]), requires_grad=True)
a = Variable(torch.FloatTensor([1., 0., 0.]).type(new_type=torch.ByteTensor))

res = torch.masked_select(v1, a)
res = 3 * res

res.backward(torch.FloatTensor([1.]))
print(v1.grad)
  • 卷积层 -> 全连接层,中间一定要 view 一下,否则会shape不匹配
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档