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实现的购物车功能示例
Feb 11 Python
Python cookbook(数据结构与算法)让字典保持有序的方法
Feb 18 Python
Python递归实现汉诺塔算法示例
Mar 19 Python
python实现批量按比例缩放图片效果
Mar 30 Python
Django添加feeds功能的示例
Aug 07 Python
使用Python的SymPy库解决数学运算问题的方法
Mar 27 Python
Python closure闭包解释及其注意点详解
Aug 28 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
Mar 11 Python
python 将视频 通过视频帧转换成时间实例
Apr 23 Python
协程Python 中实现多任务耗资源最小的方式
Oct 19 Python
Django celery异步任务实现代码示例
Nov 26 Python
python 三边测量定位的实现代码
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
python进程与线程小结实例分析
2018/11/11 PHP
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
2009/10/25 Javascript
javascript 获取页面的高度及滚动条的位置的代码
2010/05/06 Javascript
Javascript的一种模块模式
2010/09/08 Javascript
jquery聚焦文本框与扩展文本框聚焦方法
2012/10/12 Javascript
js实现图片轮换效果代码
2013/04/16 Javascript
页面实时更新时间的JS实例代码
2013/12/18 Javascript
JavaScript常用脚本汇总(一)
2015/03/04 Javascript
详解Document.Cookie
2015/12/25 Javascript
AngularJS中的表单简单入门
2016/07/28 Javascript
JS控制div跳转到指定的位置的几种解决方案总结
2016/11/05 Javascript
微信小程序通过api接口将json数据展现到小程序示例
2017/01/20 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
2018/06/30 Javascript
angularjs性能优化的方法
2018/09/05 Javascript
详解用Webpack与Babel配置ES6开发环境
2019/03/12 Javascript
一些你可能不熟悉的JS知识点总结
2019/03/15 Javascript
了解在JavaScript中将值转换为字符串的5种方法
2019/06/06 Javascript
[48:31]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第一场 2月2日
2021/03/11 DOTA
Python 中 Virtualenv 和 pip 的简单用法详解
2017/08/18 Python
python3 遍历删除特定后缀名文件的方法
2018/04/23 Python
PyCharm设置每行最大长度限制的方法
2019/01/16 Python
Win10下Python3.7.3安装教程图解
2019/07/08 Python
pandas 如何分割字符的实现方法
2019/07/29 Python
使用虚拟环境打包python为exe 文件的方法
2019/08/29 Python
python实现计算器功能
2019/10/31 Python
python时间time模块处理大全
2020/10/25 Python
幼儿运动会邀请函
2014/01/17 职场文书
北京大学自荐信范文
2014/01/28 职场文书
《三袋麦子》教学反思
2014/03/02 职场文书
地理教师岗位职责
2014/03/16 职场文书
预备党员转正思想汇报
2014/09/26 职场文书
学位证书委托书
2014/09/30 职场文书
工程项目经理岗位职责
2015/02/02 职场文书
刑事上诉状(无罪)
2015/05/23 职场文书
HTML5中 rem适配方案与 viewport 适配问题详解
2021/04/27 HTML / CSS
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python