由于在学习神经网络,为了尝试各种深度学习框架,电脑上目前安装了caffe, caffe2, paddlepaddle, tensorflow三款主流框架,但是安装过程中真是痛不欲生。

且不说单单安装一个caffe框架时花了我两天时间,各种cuda, cudnn不适应,还有Python接口有问题,由于我一直都习惯用Python3,还把它配置成了在Python3 环境下运行,可是paddlepaddle只支持Python2.7,没办法又把Python2所需支持的依赖库安装好,但是最闹心的是这三家框架各自版本对cuda,cudnn, protobuf都有不同的版本需求。有些还是无法产生交集,没办法最后只有妥协。

1、我发现在运行很多caffe,tensorflow 或者 paddle 程序报错时,添加sudo权限再执行就可以了。

比如我在安装caffe时,编译caffe通过,make runtest通过。但在使用MNIST数据集对caffe进行测试时,出现如下问题:

cannot create cublas handle.cublas won't be available

网上查找后,有的说是显卡驱动版本过高问题,在没有更改驱动的情况下,将命令

./examples/mnist/train_lenet.sh
换成
sudo ./examples/mnist/train_lenet.sh

我这就可以运行了。

*******************************************更新*******************************************************************

最近发现一个解决办法,终于把每次执行caffe或者tensorflow的Python程序时要加sudo的问题解决了,方法来自于stackoverflow论坛(https://stackoverflow.com/questions/45515142/tensorflow-gpu-is-not-working-with-blas-gemm-launch-failed)

执行以下命令就可以了

sudo rm -rf ~/.nv/

其实就是删除NVIDIA的缓存,文章中说很大可能是NVIDIA驱动版本升级或者切换安装时没有清理干净或者老版本的文件有损坏,缓存里还有老版本的文件不兼容。所以删除了就好了,解决了我的问题。命令行下运行没啥影响,终于可以方便地在IDE下执行了。开心~

2、安装pycaffe遇到 no module named 'caffe'问题

安装好caffe后,运行

import caffe

有问题 no module named 'caffe',往往是找不到caffe下的Python路径,可以试试在命令行里或者Python IDE(sublime text 或 pycharm)中

import sys
print(sys.path)

看看里面是否有caffe下的Python路径

为此,我们在~/.bashrc或者/etc/profile里添加

export PYTHONPATH=path to caffe root/python:$PYTHONPATH (path to caffe root为你的caffe路径)

然后保存,激活生效

source ~/.bashrc
# source /etc/profile

这样可以保证命令行里没有问题。

对于Python IDE,如果直接在terminal启动,就会自动继承来自系统后台的环境变量,此时导入caffe也可以成功。

如果不通过终端启动需要在import caffe之前加入路径

import sys
sys.path.append('/home/zzf/caffe/python')
import caffe

就没问题了

对于pycharm,还可以

  1. 进入pycharm-community-2017.2/bin
  2. 打开pycharm.sh
  3. 跟终端一样在最后加入一行
export PYTHONPATH=path to caffe root/python:$PYTHONPATH (path to caffe root为你的caffe路径)

这样就无需在import前用sys手动添加Python路径了

3、安装caffe2时,安装过程挺简单的,也没有什么可以让你选择的地方,默认Python2.7,但是安装好后运行

from caffe2.python import core

时,一直报错,

from caffe2.proto import caffe2_pb2
ImportError: cannot import name caffe2_pb2

TypeError: __init__() got an unexpected keyword argument 'file'

查了网上说是protobuf版本问题,于是卸了重装新一点的版本就好了,

但是犯了paddle的忌讳

➜  build git:(master) sudo -H pip install protobuf
Collecting protobuf
  Using cached https://files.pythonhosted.org/packages/9d/61/54c3a9cfde6ffe0ca6a1786ddb8874263f4ca32e7693ad383bd8cf935015/protobuf-3.5.2.post1-cp27-cp27mu-manylinux1_x86_64.whl
Requirement already satisfied: setuptools /dist-packages (from protobuf) ()
Requirement already satisfied: six>=/dist-packages (from protobuf) ()
paddlepaddle-gpu  has requirement protobuf==3.1, but you'll have protobuf 3.5.2.post1 which is incompatible.
Installing collected packages: protobuf
Successfully installed protobuf-.post1

没办法,先将就着这么用,以后要用paddle时如果报错,再把protobuf版本改回为3.1版本就好了。

4、目前电脑安装的tensorflow版本是1.4,它要求cudnn必须为6.0版,而刚安装的最新的caffe2,或者叫pytorch(因为caffe2与pytorch合并了,官网下载时可以感受到),明显觉得cudnn6.0有点低,我运行了一个relu的Python测试,提示Engine CUDNN is not available for operator Relu,也就是cudnn无法为GPU提供加速。

5、使用tensorflow的过程中还碰到一问题,在使用tensorflow的trace功能时报错:

tensorflow/stream_executor/dso_loader.cc:] Couldn’t open CUDA library libcupti.so.8.0. LD_LIBRARY_PATH:

原因:

Note: to get GPU tracing you will need to ensure that libcupti.so is on you LD_LIBRARY_PATH. It is usually found in /usr/local/cuda/extras/lib64.

无法打开usr/local/cuda/lib64/libcupti.so.8.0 ,笔者猜测可能是新旧版本默认寻找libcuti.so.8.0的路径变了,或者存放相应文件的目录做了改变,通过查看cuda安装的文件夹可以看到该文件所在的目录并没有需要的目标文件。

解决办法:

在环境变量中添加libcupti.so.8.0的路径,比如可以使用如下语句解决该问题:

sudo gedit /etc/enviroment

添加以下内容:

LD_LIBRARY_PATH="/usr/local/cuda-8.0/lib64:/usr/local/cuda-8.0/extras/CUPTI/lib64"  (对应安装的位置)

重启,再次运行就可以了。

caffe, caffe2, paddlepaddle, tensorflow对于cuda,cudnn,protobuf依赖的纠葛的更多相关文章

  1. 容器内安装nvidia,cuda,cudnn

    /var/lib/docker/overlay2 占用很大,清理Docker占用的磁盘空间,迁移 /var/lib/docker 目录 du -hs /var/lib/docker/ 命令查看磁盘使用 ...

  2. 当我们在安装tensorflow时,我们在安装什么?- Intro to TF, Virtualenv, Docker, CUDA, cuDNN, NCCL, Bazel

    (Mainly quoted from its official website) Summary: 1. TensorFlow™ is an open source software library ...

  3. 【软件安装与环境配置】ubuntu16.04+caffe+nvidia+CUDA+cuDNN安装配置

    前言 博主想使用caffe框架进行深度学习相关网络的训练和测试,刚开始做,特此记录学习过程. 环境配置方面,博主以为最容易卡壳的是GPU的NVIDIA驱动的安装和CUDA的安装,前者尝试的都要吐了,可 ...

  4. Tensorflow currently has no official prebuild for your CUDA, cuDNN combination.

    INFO CUDA version: 10. ERROR cuDNN not found. See https://github.com/deepfakes/faceswap/blob/master/ ...

  5. window10上安装python+CUDA+CuDNN+TensorFlow

    软件 版本 Window10 X64 python 3.6.4(64位) CUDA CUDA Toolkit 9.0 (Sept 2017) CuDNN cuDNN v7.0.5 (Dec 5, 20 ...

  6. ubuntu 16.04安装nVidia显卡驱动和cuda/cudnn踩坑过程

    安装深度学习框架需要使用cuda/cudnn(GPU)来加速计算,而安装cuda/cudnn,首先需要安装nvidia的显卡驱动. 我在安装的整个过程中碰到了驱动冲突,循环登录两个问题,以至于最后不得 ...

  7. ubuntu 16.04 安装 tensorflow-gpu 包括 CUDA ,CUDNN,CONDA

    ubuntu 16.04 安装 tensorflow-gpu 包括 CUDA ,CUDNN,CONDA 显卡驱动装好了,如图: 英文原文链接: https://github.com/williamFa ...

  8. windows10+VS+CUDA+cuDNN+TensorFlow-gpu环境搭建(问题及解决)

    TensorFlow-gpu环境需要CUDA+cuDNN+python,CUDA又需要VS,所以,,,环境越来越大哈哈. 1.主要环境: Python 3.6 CUDA9.0 Cudann7.0 Te ...

  9. Win10 Anaconda下TensorFlow-GPU环境搭建详细教程(包含CUDA+cuDNN安装过程)

    目录 前言 第一步:安装Anaconda 1.下载和安装 2.配置Anaconda环境变量 第二步:安装TensorFlow-GPU 1.创建conda环境 2.激活环境 3.安装tensorflow ...

随机推荐

  1. 在ANTMINER(阉割版BeagleBone Black)运行Debain

    开门见山,直入主题 咸鱼入手3块阉割ARM板,经过快递近6天运输到手,不过价格便宜 东西下面这样的(借了咸鱼的图): 发现这块板是阉割版的国外beagleboard.org型号为BeagleBone ...

  2. ASP.NET开发常用简单实用的方法

    ASP.NET开发简单实用的方法 一.打印和导出 打印和导出EXCEL在目前ASP.NET开发中可以说是必要的,有时候针对不同数据难易程度下,用有效快速的方法是解决办法的有效途径之一. 1.打印 后台 ...

  3. vs 2015 结合新配置的IIS 发布网站过程中遇到的问题及解决办法?

    1.由于扩展配置问题而无法提供您请求的页面.如果该页面是脚本,请添加处理程序 错误: HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面.如果该页面是脚本,请添 ...

  4. asp.net—策略模式

    一.什么是策略模式 定义:定义一系列算法,把一个个算法封装成独立类并实现同一个接口,使得它们之间可以相互替换. 二.怎么使用策略模式 首先模拟一个场景:有一个用户想买车.  可以有多种方式买车: (1 ...

  5. .NET 日志工具 log4net使用

    1.NuGet安装log4net. 2.修改配置文件 <?xml version="1.0"?> <configuration> <configSec ...

  6. 为什么不能用Abort退出线程

    在使用线程时,如果线程还未结束直接退出线程很有可能会导致数据丢失. class threadAbort { static void Main(string[] args) { WriteMessage ...

  7. C++ malloc 和 new 的函数说明

    malloc 和 new 一些不同点 1.  数组变量的申请 int *p = (int *) malloc (sizeof(int) * 5); if(p==NUILL) return; free ...

  8. FFmpeg编写的代码

    //初始化解封装    av_register_all();    avformat_network_init();    avcodec_register_all();    //封装文件的上下文  ...

  9. 20164321 王君陶 Exp1 PC平台逆向破解

    一.实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getS ...

  10. docker和定时任务

    查看linux信息 cat /etc/issue 以id运行容器docker start 1c3339d7f9a8通过id结束容器 docker kill 1c3339d7f9a8 Ubuntu 安装 ...