pytorch: 常见bug与debug

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

  • TypeError: ××× received an invalid combination of arguments 如果检查过了数据类型的正确性之后(float32, int) 。下一步要关心的就是 op 操作的两个 Variable/Tensor 是不是在同一个 设备上 ,如果一个在 cpu 上,一个在 gpu 上就有可能会报错
  • 注意 op 的参数要求,有些是 要求 Tensor 有些 是要求 Variable ,有些是 都可以。
  • 当需要 求梯度时,一个 op 的两个输入都必须是要 Variable:
# 这段代码,如果 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不匹配

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PaddlePaddle

【FAQ】参数设置相关问题汇总

在使用指南的最后一部分,我们汇总了使用PaddlePaddle过程中的常见问题,本部分推文目录如下: 2.22:【FAQ】模型配置相关问题汇总 2.23:【FA...

3716
来自专栏量子位

TensorFlow推出命令式、可定义的运行接口Eager Execution

安妮 编译自 Google Research Blog 量子位 出品 | 公众号 QbitAI 今天凌晨,谷歌宣布推出TensorFlow的eager exec...

3956
来自专栏码云1024

Numpy介绍与安装

2744
来自专栏PaddlePaddle

【进阶篇】C-API 使用流程

编写|PaddlePaddle 排版|wangp 这篇推文介绍 PaddlePaddle C-API 整体使用流程 1 使用流程 使用 C-API 的工作流...

2913
来自专栏码云1024

NumPy 介绍与安装

NumPy 是一个 Python 包。 它代表 “Numeric Python”。 它是一个由多维数组对象和用于处理数组的例程集合组成的库。

3415
来自专栏Python中文社区

GAFT:一个使用Python实现的遗传算法框架

專 欄 ❈PytLab,Python 中文社区专栏作者。主要从事科学计算与高性能计算领域的应用,主要语言为Python,C,C++。熟悉数值算法(最优化方法,...

1789
来自专栏PaddlePaddle

PaddlePaddle发布新版API,简化深度学习编程

PaddlePaddle是百度于2016年9月开源的一款分布式深度学习平台,为百度内部多项产品提供深度学习算法支持。为了使PaddlePaddle更加易用,我们...

3298
来自专栏瓜大三哥

基于CNN的人脸检测器——FacenessNet

FacenessNet是专门针对人脸设计的一个检测器,其考虑了头发、眼睛、鼻子、嘴巴和胡子这五个脸部特征,简单地说,对于一个候选窗口,FacenessNet先分...

3077
来自专栏AI研习社

紧跟未来深度学习框架需求,TensorFlow 推出 Eager Execution

Google 的 TensorFlow 是 AI 学习者中使用率最高、名气也最大的深度学习框架,但由于 TensorFlow 最早是基于 Google 的需求开...

3077
来自专栏机器学习原理

深度学习(1)——tensorflow简介什么是TensorFlow?什么是数据流图?安装基本概念示例变量的更新操作

2433

扫码关注云+社区