最近为了尝试解决LSTM开销大的问题,在查找一些改进工作,首先是找到了Simple Recurrent Units for Highly Parallelizable Recurrence(SRU)这篇工作,但是在使用的过程中一直遇到两个错(如题),看了作者Github(https://github.com/asappresearch/sru)上Issue中的帖子,别没有发现好的解决办法,今天下午就尝试着自己去分析了这两个问题的根源。
实验环境
OS:Linux
Cuda:10.0.130
pytorch:1.2.0
sru:2.1.6

安装SRU

  1. pip install sru(默认最新版)
  2. 通过源码python setup.py install or pip install .
  3. 如果要指定版本,例如我的环境不支持目前最新的2.5.1所以我选择了2.1.6
    a) pip install sru==2.16
    b)下载相应版本的源码,通过python setup.py install or pip install .安装
    c)下载方式:点击tags标签就会看到所有的版本,可以选择合适的进行下载

    d)安装前一定要先安装好requirements.txt中所需要的库

为了验证是否会遇到该帖子的问题,建议先运行GitHub仓库中给定的样例代码(我们在最后添加一行打印输出)

import torch
from sru import SRU, SRUCell# input has length 20, batch size 32 and dimension 128
x = torch.FloatTensor(20, 32, 128).cuda()input_size, hidden_size = 128, 128rnn = SRU(input_size, hidden_size,num_layers = 2,          # number of stacking RNN layersdropout = 0.0,           # dropout applied between RNN layersbidirectional = False,   # bidirectional RNNlayer_norm = False,      # apply layer normalization on the output of each layerhighway_bias = 0,        # initial bias of highway gate (<= 0)rescale = True,          # whether to use scaling correction
)
rnn.cuda()output_states, c_states = rnn(x)      # forward pass
print(output_states.shape)# output_states is (length, batch size, number of directions * hidden size)
# c_states is (layers, batch size, number of directions * hidden size)

问题一:ModuleNotFoundError: No module named 'cuda_functional’

解决思路:
  既然问题是找不到module,那我们就直接去源码分析,首先通过上图可以看到问题出在sru库,那我们直接到这个库看一下,通过命令 ls /home/***/anaconda3/lib/python3.6/site-packages/sru/实际中根据自己的环境路径来更改,我们发现,sru下有这个模块

既然有这个模块依然找不到,那么第一反应就应该是查看__init__.py文件,我们发现其中确实没有导入这个模块,那么我们就自己加入这个引用from .cuda_functional import *,问题得到根本解决

问题二:OSError: libnvrtc.so: cannot open shared object file: No such file or directory
  解决了问题一,这是接下来的报错

  GitHub Issue中有人提到libnvrtc.so.10.0的问题,可能是cuda版本不匹配,自己可以去尝试,我的是匹配的,而且服务器不是自己的也无法更改cuda版本,检测方式如下图:

   第一步:还是从报错内容上分析,找不到这个.so文件,就先去查一下这到底是是个什么(https://www.cnpython.com/pypi/pynvrtc),通过下图可知,我们是可以自己传这个.so文件的参数的

  第二步:分析源码是在什么位置,是在如下文件的49行,这个lib_name就是关键点,我们再去找这个参数如何传递过去,是在红色箭头上一行的文件中的444行

  第三步:那么这里就可以有两种改法
方式一:通过命令ls /usr/local/cuda-10.0/lib64/我们可以看到这里有两个libnvrtc.so文件,不过后边带了版本号,那么我们可以复制一份,命名为libnvrtc.so(需要权限,所以没有采用该方式)
方式二:更改源码:
我们可以到刚才的文件的444行去,添加一个参数**lib_name=‘libnvrtc.so.10.0’**即可

样例代码输出为:

至此,在2.1.6版本上这两个问题得以解决,其他版本未做使用,具体的版本差异在哪也未做深入研究,所以不过多保证其他版本也会遇到该问题。

SRU:ModuleNotFoundError: No module named ‘cuda_functional‘和OSError: libnvrtc.so: cannot open shared相关推荐

  1. python爬虫执行scrapy crawl demo出现: import win32api ModuleNotFoundError: No module named 'win32api'错误

    执行: >scrapy crawl demo 可能会出现这个错误: import win32api ModuleNotFoundError: No module named 'win32api' ...

  2. ModuleNotFoundError: No module named ‘pandas._libs.tslibs.base‘

    ModuleNotFoundError: No module named 'pandas._libs.tslibs.base' 目录 ModuleNotFoundError: No module na ...

  3. ModuleNotFoundError: No module named ‘cx_Oracle‘

    ModuleNotFoundError: No module named 'cx_Oracle' 目录 ModuleNotFoundError: No module named 'cx_Oracle' ...

  4. ModuleNotFoundError: No module named ‘pandas.rpy‘

    ModuleNotFoundError: No module named 'pandas.rpy' pandas升级后原来的pandas.rpy全部整合到了rpy2中: 问题: import pand ...

  5. ModuleNotFoundError: No module named ‘scipy.spatial.transform._rotation_groups‘

    ModuleNotFoundError: No module named 'scipy.spatial.transform._rotation_groups' 目录 ModuleNotFoundErr ...

  6. ubuntu 中 pip 出现 ModuleNotFoundError: No module named ‘pip._internal‘

    ubuntu 中 pip 出现 ModuleNotFoundError: No module named 'pip._internal' 文章目录 ubuntu 中 pip 出现 ModuleNotF ...

  7. ModuleNotFoundError: No module named 'sklearn.cross_validation'

    此文首发于我的个人博客:报错解决-ModuleNotFoundError No module named 'sklearn.cross_validation' - zhang0peter的个人博客 在 ...

  8. 解决ModuleNotFoundError: No module named ‘pip‘问题

    解决ModuleNotFoundError: No module named 'pip'问题_haihonga的博客-CSDN博客

  9. pandas写excel报错ModuleNotFoundError: No module named ‘xlwt‘

    pandas写excel报错ModuleNotFoundError: No module named 'xlwt' https://blog.csdn.net/weixin_36372879/arti ...

最新文章

  1. 有人能用外行人解释什么是JSONP吗? [重复]
  2. 一文读懂并发与并行,同步与异步阻塞
  3. windows下mysql(解压版)安装教程
  4. MyBatis 源码解读-XMLConfigBuilder
  5. C51_按键按下,流水灯亮起,数码管显示按下的次数
  6. python连接mysql查询一个数据_使用Connector / Python连接MySQL/查询数据
  7. 远程连接电脑_Python黑科技:在家远程遥控公司电脑,python+微信一键连接!
  8. php异步方案,php 伪异步执行实现方法
  9. python3_04.循环函数
  10. 说说你对工厂模式的理解
  11. 使用windows 10 安装中文版语言
  12. Android 学习 Android应用的两种架构
  13. Docker-07:Docker网络管理
  14. 用matlab求roc曲线的面积Auc,sklearn计算ROC曲线下面积AUC
  15. 【魏先生搞定Python系列】一文搞定SQLAlchemy学习与使用
  16. 兔子繁殖问题----Python
  17. Dell EMC VxRail,两年拿下了10亿美金
  18. 以太坊数据结构与存储分析
  19. python的数据与matlab互通:SciPy
  20. Python程序设计基础第二版董付国版课后习题答案

热门文章

  1. 职称中的“副高”与“正高”
  2. 什么是FC协议桥接卡,在1553B和FC-1553中起到什么作用
  3. GetCurrentProcessID、OpenProcessToken
  4. Python使用Flask模块创建本地服务器
  5. 100天精通Python(基础篇)——第17天:类属性和类方法
  6. RxJS 核心概念之Subject
  7. eclipse android黑屏,eclipse虚拟机黑屏原因及解决方法,亲测有效!
  8. 《视觉SLAM十四讲》读书笔记(三)
  9. CDH集群安装配置(二)- 公共环境的配置和虚拟机的克隆
  10. Litho的使用--下拉刷新上拉加载