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的Django框架中Manager方法的使用
Jul 21 Python
Python实现求一个集合所有子集的示例
May 04 Python
python学生信息管理系统(初级版)
Oct 17 Python
Numpy之random函数使用学习
Jan 29 Python
在Python函数中输入任意数量参数的实例
Jul 16 Python
Python collections模块使用方法详解
Aug 28 Python
Python for循环与getitem的关系详解
Jan 02 Python
python利用JMeter测试Tornado的多线程
Jan 12 Python
基于python实现上传文件到OSS代码实例
May 09 Python
Python闭包及装饰器运行原理解析
Jun 17 Python
python 最简单的实现适配器设计模式的示例
Jun 30 Python
Python selenium键盘鼠标事件实现过程详解
Jul 28 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带密码功能并下载远程文件保存本地指定目录 修改加强版
2010/05/16 PHP
thinkPHP5.0框架API优化后的友好性分析
2017/03/17 PHP
Laravel框架路由管理简单示例
2019/05/07 PHP
基于jquery的下拉框改变动态添加和删除表格实现代码
2020/09/12 Javascript
JS实现遮罩层效果的简单实例
2013/11/12 Javascript
一个js控制的导航菜单实例代码
2013/12/03 Javascript
jquery处理json对象
2014/11/03 Javascript
详解JavaScript正则表达式中的global属性的使用
2015/06/16 Javascript
jquery点击展示与隐藏更多内容
2016/12/03 Javascript
ionic开发中点击input时键盘自动弹出
2016/12/23 Javascript
Angularjs自定义指令实现三级联动 选择地理位置
2017/02/13 Javascript
解决jQuery ajax动态新增节点无法触发点击事件的问题
2017/05/24 jQuery
jquery图片放大镜效果
2017/06/23 jQuery
老生常谈js中的MVC
2017/07/25 Javascript
JS/jQuery实现DIV延时几秒后消失或显示的方法
2018/02/12 jQuery
[03:48]显微镜下的DOTA2第四期——TP动作
2014/06/20 DOTA
[09:33]2015国际邀请赛第四日TOP10
2015/08/08 DOTA
Python 连连看连接算法
2008/11/22 Python
Python正则表达式介绍
2012/08/06 Python
Python 运行.py文件和交互式运行代码的区别详解
2019/07/02 Python
Python 类的魔法属性用法实例分析
2019/11/21 Python
Python解析json代码实例解析
2019/11/25 Python
使用python和pygame制作挡板弹球游戏
2019/12/03 Python
Selenium常见异常解析及解决方案示范
2020/04/10 Python
利用纯CSS3实现文字向右循环闪过效果实例(可用于移动端)
2017/06/15 HTML / CSS
iframe与window.onload如何使用详解
2020/05/07 HTML / CSS
html5 拖拽及用 js 实现拖拽功能的示例代码
2020/10/23 HTML / CSS
德国街头和运动文化高品质商店:BSTN Store
2017/08/26 全球购物
德国户外商店:eXXpozed
2020/07/25 全球购物
创业计划书——互联网商机
2014/01/12 职场文书
网上快餐厅创业计划书
2014/02/01 职场文书
2014年财务部工作总结
2014/11/11 职场文书
三好学生事迹材料
2014/12/24 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
阿里云服务器搭建Php+Apache运行环境的详细过程
2021/05/15 PHP
《遗弃》开发商删推文要跑路?官方回应:还在开发
2022/04/03 其他游戏