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代码来解图片迷宫的方法整理
Apr 02 Python
Python中的Numeric包和Numarray包使用教程
Apr 13 Python
Python获取央视节目单的实现代码
Jul 25 Python
Python开发如何在ubuntu 15.10 上配置vim
Jan 25 Python
Flask-Mail用法实例分析
Jul 21 Python
python将txt文件读入为np.array的方法
Oct 30 Python
python可视化篇之流式数据监控的实现
Aug 07 Python
Python3进制之间的转换代码实例
Aug 24 Python
解决springboot yml配置 logging.level 报错问题
Feb 21 Python
Python自动化测试中yaml文件读取操作
Aug 20 Python
python爬取天气数据的实例详解
Nov 20 Python
Python 实现RSA加解密文本文件
Dec 30 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
PHP模拟asp.net的StringBuilder类实现方法
2015/08/08 PHP
php桥接模式应用案例分析
2019/10/23 PHP
一个简单的jQuery插件制作 学习过程及实例
2010/04/25 Javascript
Jquery实现弹出层分享微博插件具备动画效果
2013/04/03 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
jQuery实现图片上传和裁剪插件Croppie
2015/11/29 Javascript
使用NodeJs 开发微信公众号(三)微信事件交互实例
2016/03/02 NodeJs
nodejs redis 发布订阅机制封装实现方法及实例代码
2016/12/15 NodeJs
原生js轮播特效
2017/05/18 Javascript
最适应的vue.js的form提交涉及多种插件【推荐】
2018/08/27 Javascript
JS与SQL方式随机生成高强度密码示例
2018/12/29 Javascript
JavaScript 性能提升之路(推荐)
2019/04/10 Javascript
详解ES6 Promise的生命周期和创建
2019/08/18 Javascript
layui+SSM的数据表的增删改实例(利用弹框添加、修改)
2019/09/27 Javascript
Python存取XML的常见方法实例分析
2017/03/21 Python
python让列表倒序输出的实例
2018/06/25 Python
selenium + python 获取table数据的示例讲解
2018/10/13 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
利用Python的turtle库绘制玫瑰教程
2019/11/23 Python
如何安装并在pycharm使用selenium的方法
2020/04/30 Python
OpenCV读取与写入图片的实现
2020/10/13 Python
Python绘制数码晶体管日期
2021/02/19 Python
世界上最悠久的自行车制造商:Ribble Cycles
2017/03/18 全球购物
为您的家、后院、车库等在线购物:Spreetail
2019/06/17 全球购物
sleep()方法和wait()方法的区别是什么
2012/11/17 面试题
市场营销职业生涯规划书范文
2014/01/12 职场文书
合同协议书格式
2014/04/18 职场文书
电子商务系毕业生自荐信
2014/05/29 职场文书
应届大专生求职信
2014/06/26 职场文书
关于读书的活动方案
2014/08/14 职场文书
迟到检讨书
2015/01/26 职场文书
周一给客户的问候语
2015/11/10 职场文书
2016高考寄语或鼓励的话语
2015/12/04 职场文书
仅用几行Python代码就能复制她的U盘文件?
2021/06/26 Python
高性能跳频抗干扰宽带自组网电台
2022/02/18 无线电
Redis实现订单过期删除的方法步骤
2022/06/05 Redis