为了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
不行
重启就解决了,不知道为什么