为了caffe(三)在安装完了caffe之后做python配置

为了caffe(三)在安装完了caffe之后做python配置

 

配置  联想笔记本G480 双显卡(intel集成显卡和N卡独立显卡GeForce610M

ubuntu14.0464位 cuda7.5   cudnn5.1   opencv3.0  +caffe

 

现在是2016年8月这个方法早晚失效        我因为看别人教程   安装过程中各个版本问题兼职要吐了  记录一下 

 

 

接着上文的 mnist和 python  往下写

 

 

一个问题:::

 

今天再开机的以后,出了问题,,,,直接运行例程

dong@dong-Lenovo-G480:~/NVIDIA_CUDA-7.5_Samples/bin/x86_64/linux/release$ ./deviceQuery

./deviceQuery Starting...

 

 CUDA Device Query (Runtime API) version (CUDART static linking)

 

modprobe: FATAL: Module nvidia-uvm not found.

cudaGetDeviceCount returned 30

-> unknown error

Result = FAIL

 

 

这里是 nvidia-uvm 模块出现问题,,,,参考(https://devtalk.nvidia.com/default/topic/760872/ubuntu-12-04-error-cudagetdevicecount-returned-30/

 

解决办法:::

 

 

直接:::::

dong@dong-Lenovo-G480:/$ sudo modprobe -v nvidia_352_uvm

insmod /lib/modules/4.2.0-27-generic/updates/dkms/nvidia_352.ko

insmod /lib/modules/4.2.0-27-generic/updates/dkms/nvidia_352_uvm.ko

 

这是在我的电脑上就ok了

就能再运行 deviceQuery例程了

 

 

解决过程是:::::

 

 

 

 

输入 sudo modinfo nvidia再不停的按tab,就可以看到你的那个uvm模块

$ sudo  modinfo nvidia

nvidia_352      nvidia_352_uvm  nvidiafb    

 

再挂载这个uvm模块就行了

 

$ sudo modprode -v nvidia_3

sudo: modprode: command not found  (这是一个小问题,我再例程的目录下,会提示我没这个命令,,, 不懂啊???)

 

所以我切换到了 / 目录   (这里进入 ~目录也行,,,,刚才为什么不行?不知道啊)

 

 

cd /

dong@dong-Lenovo-G480:/$ sudo mod

modinfo   modprobe  

 

dong@dong-Lenovo-G480:/$ sudo modprobe -v nvidia_352_uvm

insmod /lib/modules/4.2.0-27-generic/updates/dkms/nvidia_352.ko

insmod /lib/modules/4.2.0-27-generic/updates/dkms/nvidia_352_uvm.ko

 

再运行例程就行了

 

 

 

注意:::::

下面可以是一个永远解决这个问题的方法。。。。。后面试了试这个办法不能永远解决问题,每一次开机还是要挂载UVM模块

dong@dong-Lenovo-G480:~$ sudo update-alternatives --config x86_64-linux-gnu_gl_conf

There are 3 choices for the alternative x86_64-linux-gnu_gl_conf (providing /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf).

 

  Selection    Path                                       Priority   Status

------------------------------------------------------------

  0            /usr/lib/nvidia-352/ld.so.conf              8604      auto mode

  1            /usr/lib/nvidia-352-prime/ld.so.conf        8603      manual mode

  2            /usr/lib/nvidia-352/ld.so.conf              8604      manual mode

* 3            /usr/lib/x86_64-linux-gnu/mesa/ld.so.conf   500       manual mode

这里本来是选择的3号,,,但是这个3号可能就是问题,所以就改成1号就好了

Press enter to keep the current choice[*], or type selection number: 1                        

update-alternatives: using /usr/lib/nvidia-352-prime/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf (x86_64-linux-gnu_gl_conf) in manual mode

 

 

验证一下是不是改成1了

dong@dong-Lenovo-G480:~$ sudo update-alternatives --config x86_64-linux-gnu_gl_conf

There are 3 choices for the alternative x86_64-linux-gnu_gl_conf (providing /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf).

 

  Selection    Path                                       Priority   Status

------------------------------------------------------------

  0            /usr/lib/nvidia-352/ld.so.conf              8604      auto mode

* 1            /usr/lib/nvidia-352-prime/ld.so.conf        8603      manual mode

  2            /usr/lib/nvidia-352/ld.so.conf              8604      manual mode

  3            /usr/lib/x86_64-linux-gnu/mesa/ld.so.conf   500       manual mode

 

Press enter to keep the current choice[*], or type selection number:

dong@dong-Lenovo-G480:~$

 

 

 

 

正文::::::

 

在caffe下面  配置 python   也是各种版本都有,然后抄来抄去,很乱啊啊啊啊。。  (我后来用了anaconda,这是一个独立的python环境,附带极其好用的GUI界面,代码提示,图像化表示等等非常好的功能,这篇文章就当做是个过程了)

 

 

 

安装python,,,,参考(http://www.cnblogs.com/sunshineatnoon/p/4535329.html

因为caffe的tutorial上有很大一部分是python的,所以后来又安装了一下python的接口。

1.首先安装python

2.安装pip

sudo apt-get install python-pip python-dev build-essential

3.运行以下代码安装必要的依赖项:

cd ~/caffe

sudo pip install -r ./python/requirements.txt

4.这里我运行了make clean以及其他编译的caffe的命令,重新编译了一次caffe,但我不确定是不是必须的。(上面那句话是原作者的,其实我也不知道应该怎么办,就按着他来弄了)

 

sudo make clean

sudo make all

sudo make test

sudo make runtest

sudo make pycaffe

 

 

 

 

 

注意:::::::

在这一回在make runtest时候出问题了

 

F0827 16:17:06.077015 18407 syncedmem.hpp:18] Check failed: error == cudaSuccess (30 vs. 0)  unknown error

*** Check failure stack trace: ***

    @     0x2ab0e1d47daa  (unknown)

    @     0x2ab0e1d47ce4  (unknown)

    @     0x2ab0e1d476e6  (unknown)

    @     0x2ab0e1d4a687  (unknown)

 

网上有说是cuda没开,需要运行例程 deviceQuery

,回去运行deviceQuery果然好了,又能看见很多RUN  OK了,,继续,

 

 

5.在caffe的根目录下运行:

sudo  make pycaffe

 

6.把caffe/python的路径加到python路径中:

运行python进入python shell,然后运行下列命令:

import sys

sys.path.append("path/to/caffe/python/")#这里替换成自己的路径

exit()

 

注意:试了试这个  不管用的,,后面有真正的办法

7. 这时候再次进入python shell,运行import caffe就没有报错了。

(还是不行啊!!!!!)

>>> import caffe

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

ImportError: No module named caffe

 

 

 

试试官方说明吧

 

Python and/or MATLAB Caffe (optional)

Python

The main requirements are numpy and boost.python (provided by boost). pandas is useful too and needed for some examples.

You can install the dependencies with  (这句话要在caffe/python下进行)

for req in $(cat requirements.txt); do pip install $req; done

but we suggest first installing the Anaconda Python distribution, which provides most of the necessary packages, as well as the hdf5 library dependency.(要先安好python,可是我的ubuntu14.04已经自带了python2.7,,翻译错了,它本来的意思是推荐安装Anaconda

To import the caffe Python module after completing the installation, add the module directory to your $PYTHONPATH by export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH or the like. You should not import the module in the caffe/python/caffe directory!(翻译过来就是:需要添加一个环境变量,最好用写在文件里添加!会永久生效!!!!!)

(可以这么做

sudo gedit /etc/profile

在文件里加入

export PYTHONPATH=~/caffe/python:$PYTHONPATH 

我的就是这个路径,,,,是的就这一行,没有更多的什么乱七八糟的东西~!!!!!!

使得文件生效

source  /etc/profile

 

 

 

再import caffe 终于成功了

 

Caffe’s Python interface works with Python 2.7. Python 3.3+ should work out of the box without protobuf support. For protobuf support please install protobuf 3.0 alpha (https://developers.google.com/protocol-buffers/). Earlier Pythons are your own adventure.

(翻译 需要安装protobuf ,,那么问题来了,我前面安了吗,,怎么检查,怎么验证安装)

(这么验证!!!!!

dong@dong-Lenovo-G480:~$ protoc --version

libprotoc 2.5.0

 

 

 

 

 

但是我在pycharm里面还不行 

刚才还行啊  我又在命令行里 import caffe 又不行了

 

dong@dong-Lenovo-G480:~$ python

Python 2.7.6 (default, Jun 22 2015, 17:58:13)

[GCC 4.8.2] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import caffe

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

ImportError: No module named caffe

 

测试发现 profile文件里面还正常 但是

dong@dong-Lenovo-G480:~$ echo $PYTHONPATH

没有反应了

 

重新source  /etc/profile

现在又行了

(怎么回事啊???  可能是在pythonpath里面不能写~代表相对路径只能用/home/dong/caffe/python吗??????)

 

我开了pycharm再试  no

开命令行再试 no

测试PYTHONPATH  no

fuck怎么回事???

原因::::关了那个命令行,环境变量就没了!!!!!!!!

 

 

 

 

我原来是这么写的  是不是因为有空行  才出问题???????

export PATH=/usr/local/cuda-7.5/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH

 

export PYTHONPATH=/home/dong/caffe/python:$PYTHONPATH

 

测试不是空行的问题 就是不行了  该死的

 

网上说设置完了 环境变量需要重启  试试

 

解决问题:::::profile文件需要重启,才能永久生效~!!!!!!!!!

这时候在pycharm里面 import   caffe也行了!!!!!!

很开心

 

 

 

 

到这里  python 在caffe里配置完成

 

下一章 

 

 

(13章了)

 

附录   上面我都进行完了。,,,,,,

 

 

好像下面的都不用。不安Anaconda,现在我安好了 caffe,只要安jupyter,就行了,,,猜的,,没试过。。。

不对不对就是应该一开始用Anaconda,,,,,我用过了Anaconda才知道,它真的特别好用,,,,,不要用pycharm了,我最喜欢spyder了,

 

 

Anaconda类似于pycharm吧,都是一个写python程序的地方,不过Anaconda更加美观简介,

Anaconda是不是一个独立于系统的python环境??是的

安装Anaconda  

http://www.cnblogs.com/denny402/p/5088399.html

 

但是不并不清楚,前面的都做好了,再做这个Anaconda  会不会有问题啊?????

 

第1  , 安装时候,,我前面已经设置了PYTHONPATH环境变量,,这里就报错了

 

,installation finished.

WARNING:

    You currently have a PYTHONPATH environment variable set. This may cause

    unexpected behavior when running the Python interpreter in Anaconda2.

    For best results, please verify that your PYTHONPATH only points to

    directories of packages that are compatible with the Python interpreter

    in Anaconda2: /home/dong/anaconda2

Do you wish the installer to prepend the Anaconda2 install location

to PATH in your /home/dong/.bashrc ? [yes|no]

[no] >>>

You may wish to edit your .bashrc or prepend the Anaconda2 install location:

 

$ export PATH=/home/dong/anaconda2/bin:$PATH

 

Thank you for installing Anaconda2!

 

Share your notebooks and packages on Anaconda Cloud!

Sign up for free: https://anaconda.org

解决:删了/etc/profile 文件中的

export PYTHONPATH=/home/dong/caffe/python:$PYTHONPATH (该死的,后面还要再加上这个)

删了刚安好的anaconda重来,(不删可能也行手动添加环境变量,就不知道对不对啊??)

,,,删了 PYTHONPATH,还要重启,最好用echo $PYTHONPATH验证一下  它确实没了

 

重新安装了,就行了  再重启一下吧(可能不需要,就是让环境变量确定生效)

 

(跟我猜的一样就是/home/dong/anaconda2/bin: 好像也能自己写)

 

 

 

 

 

 

 

第2  我用

conda list  检查安装的包,,对应home/dong/caffe/python/requirements.txt文件

发现了3个包没安(leveldb,  protobuf , python-gflags), 1个包版本比要求的高了(,python-dateutil )

先不管,标注一下。。。

 

 

 

 

 

注意:修改了,Makefile.config文件最好重新clean,再make,一遍,

sudo make clean

sudo make all

sudo make test

sudo make runtest

sudo make pycaffe

 

 

第3步

(1)

写得很好很详细。
我在编译runtest的时候,也遇到了这个问题,不过用你方法后还是不行。另外,import caffe 时 报错:No module named google.protobuf.internal

(2)

No module named google.protobuf.internal 的问题解决了,先用root权限,chmod 777 -R 解除anaconda2的文件夹保护,然后anaconda install protobuf ,就没有报错了。

 

(3)楼主的建议是:

先安装一下google的protobuf库
# sudo apt-get install libprotobuf-dev

(4)这个人又说:::  我也是这样

楼主,我也碰到了No module named google.protobuf.internal的错误呃

尝试了

No module named google.protobuf.internal 的问题解决了,先用root权限,chmod 777 -R 解除anaconda2的文件夹保护,然后anaconda install protobuf ,就没有报错了。

但是显示
usage: anaconda [-h] [--show-traceback] [--hide-traceback] [-v] [-q] [--color]
[--no-color] [-V] [-t TOKEN] [-s SITE]
...
anaconda: error: argument : invalid choice: 'install' (choose from 'auth', u'label', u'channel', 'config', u'copy', u'download', 'groups', u'login', 'logout', u'notebook', 'package', 'remove', 'search', 'show', u'upload', u'whoami')


也尝试了您说的
sudo apt-get install libprotobuf-dev

显示为libprotobuf-dev is already the newest version.

(5)  最后这样解决了问题!!!

  

#15楼 2016-06-03 14:48 | wuboqian   

楼上的,你改为conda install试试,我成功了……

 

(6)成功了:::

dong@dong-Lenovo-G480:/usr/lib/x86_64-linux-gnu$ python

Python 2.7.12 |Anaconda 4.1.1 (64-bit)| (default, Jul  2 2016, 17:42:40)

[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

Anaconda is brought to you by Continuum Analytics.

Please check out: http://continuum.io/thanks and https://anaconda.org  

是不是这时候python就指向了Anaconda的python,而不是系统自带的python了????应该是的

>>> import caffe

/home/dong/anaconda2/lib/python2.7/site-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment.

  warnings.warn('Matplotlib is building the font cache using fc-list. This may take a moment.')

 

成功导入caffe,但是不知道后面那个警告是什么意思

 

 

 

问题1 :

在这一步报错::

sudo make all   

In file included from /usr/include/boost/python/detail/prefix.hpp:13:0,

                 from /usr/include/boost/python/args.hpp:8,

                 from /usr/include/boost/python.hpp:11,

                 from src/caffe/layer_factory.cpp:4:

/usr/include/boost/python/detail/wrap_python.hpp:50:23: fatal error: pyconfig.h: No such file or directory

 # include <pyconfig.h>

原因:配置config文件的时候不仔细,!!!!

解决:参照原作者的文件,仔细对应好

 

 

问题2 

jupyter notebook

打开了浏览器,但是不能建立python文件,报错:

Creating Notebook Failed

An error occurred while creating a new notebook.

Permission denied: Untitled.ipynb

 

解决办法:解决办法:使用 sudo jupyter notebook 打开

还是不行

dong@dong-Lenovo-G480:~$ sudo jupyter notebook

[sudo] password for dong:

sudo: jupyter: command not found

 

解决办法: 关了这个终端,又开一个终端,又试试jupyter notebook  就行了  能建立python文件了 ,,,, 不知道为什么啊??/

 

 

 

 

 

 

 

 

 

(14章了)

 

第1 

import numpy as np

import matplotlib.pyplot as plt

# /'%matplotlib inline     这句话本来有问题吧,那个%号是什么用的,我用# 注释了这句话    后来我取消注释,也可以了,楼主说:如果要在网页内直接显示图片,注意加上%matplotlib inline这句

import caffe

caffe_root  = '/home/dong/caffe'

import os,sys

os.chdir(caffe_root)

sys.path.insert(0,caffe_root+'python')

im = caffe.io.load_image('examples/images/cat.jpg')

print im.shape

plt.imshow(im)     在pycharm里面不显示图片,这也是我从pycharm改到这里的原因,,,但是为什么呢???

plt.axis('off')

 

 

 

ps:其实Anaconda的代码提示功能不好用,不如pycharm。。。说错了是jupyter notebook 不好用,  推荐用spyder,非常好用,这个也是Anaconda里面带的

 

 

第2:::

 

In [2]:

! cat examples/net_surgery/conv.prototxt

能运行这句话,是不是因为 前面

 

import caffe

caffe_root  = '/home/dong/caffe'

import os,sys

os.chdir(caffe_root)   我猜的

 

 

第3::::

 

net = caffe.Net('examples/net_surgery/conv.prototxt', caffe.TEST)

这里逗号正确是黑色,否则是红色(就是中文逗号)

im_input = im[np.newaxis,:,:,:].transpose(0,3,1,2)

print "data-blobs:",im_input.shape

net.blobs['data'].reshape(*im_input.shape)

net.blobs['data'].data[...] = im_input

plt.imshow(net.blobs['data'].data[0].transpose(1,2,0))

plt.axis('off')

 

代码什么意思啊  我不是很动啊???

 

 

 

第4::

net.forward()

print "data-blobs:",net.blobs['data'].data.shape

print "conv-blobs:",net.blobs['conv'].data.shape

print "weight-blobs:",net.params['conv'][0].data.shape

show_data(net.params['conv'][0].data[:,0],'conv weights(filter)')

show_data(net.blobs['conv'].data[0],'post-conv images')

 

执行以后,报错, 这个错误评论里有人提过,不知道为什么,不知道怎么办??答:就是某一个caffe代码错了,导致崩溃了,但是这里看不到为什么错了,推荐用ipython输入代码,就会详细报错

Kernel Restarting

The kernel appears to have died. It will restart automatically.

 

 

 

 

(15章了)http://www.cnblogs.com/denny402/p/5102328.html

 

 

dong@dong-Lenovo-G480:~/caffe/examples/myfile$ sudo python convert_mean.py        ./mean.binaryproto  mean.npy

Traceback (most recent call last):

  File "convert_mean.py", line 2, in <module>

    import caffe

ImportError: No module named caffe

 

写到文件里面就不行了???????  答:天知道哪里又没弄好。。。。

 

 

 

(16章了)http://www.cnblogs.com/denny402/p/5103425.html

 

设置好solver.prototxt后,我们可以把训练好的模型保存起来,如lenet_iter_10000.caffemodel。这个文件里面存放的就是各层的参数,即net.params,里面没有数据 (net.blobs)。

顺带还生成了一个相应的solverstate文件,这个和caffemodel差不多,但它多了一些数据,如模型名称、当前迭 代次数等。两者的功能不一样,训练完后保存起来的caffemodel,是在测试阶段用来分类的,而solverstate是用来恢复训练的,防止意外终 止而保存的快照(有点像断点续传的感觉)。

 

觉得看见了,也没啥用啊??

 

(17章了)

 

 

那是测试的图从哪里来的?????  那个狗的图   32.jpg

这篇文章讲了,先用caffe对cifar10进行训练,将训练的结果模型进行保存,得到一个caffemodel,然后从测试图片中选出一张进行测试(可是测试图都不是一般的图像格式啊??怎么办?答:这个就涉及到了对数据的转化,各种格式的数据,csv,lmdb,jpg,png等等?不同的数据格式怎么进行测试后面会有),并进行可视化(就是把中间过程用图片表示出来)。,最后能正确的预测这个图是狗,正确分类

 

 

Caffe学习系列(18): 绘制网络模型

 

dong@dong-Lenovo-G480:~/caffe$ sudo python python/draw_net.py examples/mnist/lenet_train_test.prototxt netImage/lenet.png --rankdir=BT

RuntimeError: module compiled against API version 0xa but this version of numpy is 0x9

Traceback (most recent call last):

  File "python/draw_net.py", line 8, in <module>

    import caffe

  File "/home/dong/caffe/python/caffe/__init__.py", line 1, in <module>

    from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver

  File "/home/dong/caffe/python/caffe/pycaffe.py", line 13, in <module>

    from ._caffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, \

ImportError: numpy.core.multiarray failed to import

 

原因:大概是:现在是1.11版numpy,应该用1.9的(可是0xa代表10 吧?我是不是猜错了)   

dong@dong-Lenovo-G480:~$ conda install numpy=1.9

 

结果还是不行

 

pip install --upgrade numpy

又通过这个回到1.11版本

 

>>> print numpy.__version__

1.11.1

 

 

看了挺多了,实在没办法解决

 

Caffe学习系列(19): 绘制loss和accuracy曲线 

 

 

import caffe又出问题了!!!可能是刚才动了什么吧??

报错:

Intel MKL FATAL ERROR: Cannot load libmkl_avx.so or libmkl_def.so.

解决办法:

if you use conda , try with two commands

conda install nomkl numpy scipy scikit-learn numexpr

好了。

 

到 caffe.set_device(0)   时候

又错了

F0829 23:07:52.971405 10726 common.cpp:151] Check failed: error == cudaSuccess (38 vs. 0)  no CUDA-capable device is detected

 

解决过程:试着运行例程dong@dong-Lenovo-G480:~$ ./NVIDIA_CUDA-7.5_Samples/bin/x86_64/linux/release/deviceQuery

./NVIDIA_CUDA-7.5_Samples/bin/x86_64/linux/release/deviceQuery Starting...

 

 CUDA Device Query (Runtime API) version (CUDART static linking)

 

cudaGetDeviceCount returned 38

-> no CUDA-capable device is detected

Result = FAIL

不行

 

重启就解决了,不知道为什么

你可能感兴趣的:(为了caffe(三)在安装完了caffe之后做python配置)