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教程之用py2exe将PY文件转成EXE文件
Jun 12 Python
Python实现向QQ群成员自动发邮件的方法
Nov 19 Python
Python使用shelve模块实现简单数据存储的方法
May 20 Python
Python中shape计算矩阵的方法示例
Apr 21 Python
django query模块
Apr 20 Python
python 实现识别图片上的数字
Jul 30 Python
python正则过滤字母、中文、数字及特殊字符方法详解
Feb 11 Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
Feb 27 Python
pyqt5数据库使用详细教程(打包解决方案)
Mar 25 Python
解决在keras中使用model.save()函数保存模型失败的问题
May 21 Python
Python高并发解决方案实现过程详解
Jul 31 Python
如何利用python读取micaps文件详解
Oct 18 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和MySQL保存和输出图片
2006/10/09 PHP
初步介绍PHP扩展开发经验分享
2012/09/06 PHP
php过滤敏感词的示例
2014/03/31 PHP
ThinkPHP页面跳转success与error方法概述
2014/06/25 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
thinkPHP5框架中widget的功能与用法详解
2018/06/11 PHP
Laravel中的chunk组块结果集处理与注意问题
2018/08/15 PHP
yii2的restful api路由实例详解
2019/05/14 PHP
使用jQuery模板来展现json数据的代码
2010/10/22 Javascript
jQuery去掉字符串起始和结尾的空格(多种方法实现)
2013/04/01 Javascript
js中replace的用法总结
2013/12/27 Javascript
js通过iframe加载外部网页的实现代码
2015/04/05 Javascript
TinyMCE汉化及本地上传图片功能实例详解
2016/05/31 Javascript
搭建element-ui的Vue前端工程操作实例
2018/02/23 Javascript
vue 实现数字滚动增加效果的实例代码
2018/07/06 Javascript
js利用iframe实现选项卡效果
2020/08/09 Javascript
[30:51]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第一局
2016/03/04 DOTA
Python中计算三角函数之cos()方法的使用简介
2015/05/15 Python
python脚本设置系统时间的两种方法
2016/02/21 Python
Django  ORM 练习题及答案
2019/07/19 Python
在Python中append以及extend返回None的例子
2019/07/20 Python
Python3实现mysql连接和数据框的形成(实例代码)
2020/01/17 Python
CSS3实现DIV圆角效果完整代码
2012/10/10 HTML / CSS
天巡全球:Skyscanner Global
2017/06/20 全球购物
财务助理岗位职责
2013/11/10 职场文书
企业为何需要商业计划书
2013/12/26 职场文书
四查四看剖析材料
2014/02/14 职场文书
元旦文艺汇演主持词
2014/03/26 职场文书
消防志愿者活动方案
2014/08/23 职场文书
软弱涣散基层党组织整改方案
2014/10/25 职场文书
2014年劳动部工作总结
2014/12/11 职场文书
市场总监岗位职责
2015/02/11 职场文书
联谊活动总结范文
2015/05/09 职场文书
植树节新闻稿
2015/07/17 职场文书
校园之声广播稿
2015/08/18 职场文书