Pytorch 解决自定义子Module .cuda() tensor失败的问题


Posted in Python onJune 23, 2020

最近在刚从tensorflow转入pytorch,对于自定义的nn.Module 碰到了个问题,即使把模组 modle=Model().cuda(),里面的子Module的parameter都没有被放入cuda,导致输入是torch.cuda.FloatTensor,但是比如CNN的weight却还是torch.FloatTensor

(当然最粗暴的方法就是直接在子模组里面都用了 .cuda()

但是问题并不在那,可能是调用子模组的时候,存在某些错误,导致父模组没有把子模组的parameter注册到pytorch中。

而我遇到的错误就是,使用list来存放子模组的对象,导致list中的parameter没有注册。

解决方案就是 使用nn.ModuleList()这个封装的函数 来替换list() / []

参考这里

补充知识:关于Pytorch框架下报错CUDA驱动版本不满足CUDA运行版本——一种可能的原因及解决办法

运行Pytorch代码的时候遇到:

RuntimeError: cuda runtime error (35) : CUDA driver version is insufficient for CUDA runtime version at /pytorch/aten/src/THC/THCGeneral.cpp:74

可能原因:每一个pytorch版本都有对应的cuda版本,可能是在安装pytorch的时候,选择的pytorch版本所对应的版本cuda版本与本机所安装的cuda版本不相符。

Pytorch 解决自定义子Module .cuda() tensor失败的问题

check步骤:

#查看pytorch版本

import torch

torch.__version__

#查看pytorch版本对应的cuda版本

torch.version.cuda

#查看cuda是否可用

torch.cuda.is_available()

#查看Linux server安装的cuda版本

#切换到/usr/local/cuda/samples/1_Utilities/deviceQuery然后运行

./deviceQuery

出现类似以下信息:

./deviceQuery Starting...
 CUDA Device Query (Runtime API) version (CUDART static linking)
Detected 1 CUDA Capable device(s)

Device 0: "GeForce GTX TITAN Black"
 CUDA Driver Version / Runtime Version  8.0 / 8.0
 CUDA Capability Major/Minor version number: 3.5
 Total amount of global memory:   6080 MBytes (6375407616 bytes)
 (15) Multiprocessors, (192) CUDA Cores/MP: 2880 CUDA Cores
 GPU Max Clock rate:    1072 MHz (1.07 GHz)
 Memory Clock rate:    3500 Mhz
 Memory Bus Width:    384-bit
 L2 Cache Size:     1572864 bytes
 Maximum Texture Dimension Size (x,y,z)  1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
 Maximum Layered 1D Texture Size, (num) layers 1D=(16384), 2048 layers
 Maximum Layered 2D Texture Size, (num) layers 2D=(16384, 16384), 2048 layers
 Total amount of constant memory:  65536 bytes
 Total amount of shared memory per block: 49152 bytes
 Total number of registers available per block: 65536
 Warp size:     32
 Maximum number of threads per multiprocessor: 2048
 Maximum number of threads per block:  1024
 Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
 Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535)
 Maximum memory pitch:    2147483647 bytes
 Texture alignment:    512 bytes
 Concurrent copy and kernel execution:  Yes with 1 copy engine(s)
 Run time limit on kernels:   No
 Integrated GPU sharing Host Memory:  No
 Support host page-locked memory mapping: Yes
 Alignment requirement for Surfaces:  Yes
 Device has ECC support:   Disabled
 Device supports Unified Addressing (UVA): Yes
 Device PCI Domain ID / Bus ID / location ID: 0 / 1 / 0
 Compute Mode:
 < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 8.0, CUDA Runtime Version = 8.0, NumDevs = 1, Device0 = GeForce GTX TITAN Black
Result = PASS

比对前后两个cuda版本是否一致,如果不一致,就需要卸载并安装与本机cuda版本相同的pytorch(当然应该也可以改本机的cuda版本,只不过相对比较麻烦)

pip3 uninstall pytorch
pip3 install [pytorch-version-link]

打开链接,选择合适版本版本,右键复制链接地址,替换上面的pytorch-version-link,执行命令就行。

这样应该就可以解决了。

以上这篇Pytorch 解决自定义子Module .cuda() tensor失败的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中正则表达式的用法实例汇总
Aug 18 Python
Python实现的视频播放器功能完整示例
Feb 01 Python
python学生管理系统代码实现
Apr 05 Python
使用python读取csv文件快速插入数据库的实例
Jun 21 Python
python paramiko利用sftp上传目录到远程的实例
Jan 03 Python
python解析含有重复key的json方法
Jan 22 Python
Python:Numpy 求平均向量的实例
Jun 29 Python
Django中reverse反转并且传递参数的方法
Aug 06 Python
浅谈Python中threading join和setDaemon用法及区别说明
May 02 Python
Django Model中字段(field)的各种选项说明
May 19 Python
python sleep和wait对比总结
Feb 03 Python
python 如何获取页面所有a标签下href的值
May 06 Python
python如何查看安装了的模块
Jun 23 #Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
Jun 23 #Python
Python dict的常用方法示例代码
Jun 23 #Python
Python3 webservice接口测试代码详解
Jun 23 #Python
python和JavaScript哪个容易上手
Jun 23 #Python
pytorch 查看cuda 版本方式
Jun 23 #Python
Spring @Enable模块驱动原理及使用实例
Jun 23 #Python
You might like
纯真IP数据库的应用 IP地址转化成十进制
2009/06/14 PHP
PHP中strtotime函数使用方法详解
2011/11/27 PHP
解析PHP跨站刷票的实现代码
2013/06/18 PHP
phpmailer发送gmail邮件实例详解
2013/06/24 PHP
php使用google地图应用实例
2014/12/31 PHP
Yii2中如何使用modal弹窗(基本使用)
2016/05/30 PHP
PHP 信号管理知识整理汇总
2017/02/19 PHP
tp5.1 实现setInc字段自动加1
2019/10/18 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
jQuery 锚点跳转滚动条平滑滚动一句话代码
2010/04/30 Javascript
JS+CSS设置img在DIV中只显示Img垂直居中的部分
2013/10/24 Javascript
深入理解javascript原型链和继承
2014/09/23 Javascript
jQuery插件scroll实现无缝滚动效果
2015/04/27 Javascript
js原生跨域_用script标签的简单实现
2016/09/24 Javascript
js将table的每个td的内容自动赋值给其title属性的方法
2016/10/13 Javascript
详解微信小程序开发之——wx.showToast(OBJECT)的使用
2017/01/18 Javascript
js简易版购物车功能
2017/06/17 Javascript
JS判断微信扫码的方法
2017/08/07 Javascript
浅谈Angular路由复用策略
2017/10/04 Javascript
js+html5生成自动排列对话框实例
2017/10/09 Javascript
js经验分享 JavaScript反调试技巧
2018/03/10 Javascript
JavaScript执行环境及作用域链实例分析
2018/08/01 Javascript
vue子传父关于.sync与$emit的实现
2019/11/05 Javascript
JavaScript对象原型链原理详解
2020/02/05 Javascript
Vue自动构建发布脚本的方法示例
2020/07/24 Javascript
Python中的zip函数使用示例
2015/01/29 Python
Python2和Python3.6环境解决共存问题
2018/11/09 Python
在python中使用nohup命令说明
2020/04/16 Python
Python openpyxl 插入折线图实例
2020/04/17 Python
Python在线和离线安装第三方库的方法
2020/10/31 Python
html5使用Drag事件编辑器拖拽上传图片的示例代码
2017/08/22 HTML / CSS
医学检验专业大学生求职信
2013/11/18 职场文书
公务员综合考察材料
2014/02/01 职场文书
入党介绍人考察意见
2015/06/01 职场文书
如何用JS实现网页瀑布流布局
2021/04/24 Javascript
css中z-index: 0和z-index: auto的区别
2021/08/23 HTML / CSS