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应用库大全总结
May 30 Python
python微信公众号之关键词自动回复
Jun 15 Python
对python3 一组数值的归一化处理方法详解
Jul 11 Python
对pandas中Series的map函数详解
Jul 25 Python
python实现自动获取IP并发送到邮箱
Dec 26 Python
对python 通过ssh访问数据库的实例详解
Feb 19 Python
10个Python面试常问的问题(小结)
Nov 20 Python
python ffmpeg任意提取视频帧的方法
Feb 21 Python
Python实现验证码识别
Jun 15 Python
Python使用内置函数setattr设置对象的属性值
Oct 16 Python
尝试使用Python爬取城市租房信息
Apr 12 Python
python游戏开发Pygame框架
Apr 22 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中switch语句用法详解
2015/08/17 PHP
PHP设置images目录不充许http访问的方法
2016/11/01 PHP
PHP echo()函数讲解
2019/02/15 PHP
JS查看对象功能代码
2008/04/25 Javascript
JavaScript监测ActiveX控件是否已经安装过的代码
2008/09/02 Javascript
23个Javascript弹出窗口特效整理
2011/02/25 Javascript
window.open打开页面居中显示的示例代码
2013/12/27 Javascript
下雪了 javascript实现雪花飞舞
2020/08/02 Javascript
基于javascript数组实现图片轮播
2016/05/02 Javascript
js 获取经纬度的实现方法
2016/06/20 Javascript
判断数组的最佳方法(推荐)
2016/10/11 Javascript
使用Curl命令查看请求响应时间方法
2016/11/04 Javascript
JS常用正则表达式总结【经典】
2017/05/12 Javascript
BootStrap 表单控件之单选按钮水平排列
2017/05/23 Javascript
JQuery EasyUI的一些常用组件
2017/07/12 jQuery
js弹性势能动画之抛物线运动实例详解
2017/07/27 Javascript
[js高手之路]寄生组合式继承的优势详解
2017/08/28 Javascript
详解React中共享组件逻辑的三种方式
2021/02/02 Javascript
[39:08]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第一场 12.12
2020/12/16 DOTA
Python实现简单多线程任务队列
2016/02/27 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
2019/11/19 Python
Python3中小括号()、中括号[]、花括号{}的区别详解
2020/11/15 Python
使用css3和jquery实现可伸缩搜索框
2014/02/12 HTML / CSS
巧用 CSS3的webkit-box-reflect 倒影实现各类动效
2021/03/05 HTML / CSS
html5 datalist 选中option选项后的触发事件
2020/03/05 HTML / CSS
澳大利亚快时尚鞋类市场:Billini
2018/05/20 全球购物
学生发电厂实习自我鉴定
2013/09/22 职场文书
业务主管岗位职责范本
2013/12/25 职场文书
销售主管岗位职责范本
2014/02/14 职场文书
数控技校生自我鉴定
2014/03/02 职场文书
经理助理岗位职责
2014/03/05 职场文书
应聘教师求职信
2014/07/19 职场文书
企业员工集体活动方案
2014/08/17 职场文书
幼儿园园长安全责任书
2015/05/08 职场文书
小学体育课教学反思
2016/02/16 职场文书
导游词之鲁迅祖居
2019/10/17 职场文书