Ubuntu16.04 + GTX1070 + CUDA8.0 + cudnn5.1 + Caffe + Tensorflow

首先,去NVIDIA官网下载你电脑对应型号所需驱动。我当时下载的是(NVIDIA-Linux-x86_64-375.39.run),目前应该有最新的稳定版本,下载好之后,我们再进行后续步骤。

1. 禁用nouveau驱动

要先禁用Ubuntu 自带的显卡驱动,才能装Nvidia显卡驱动

Ctrl+Alt+F1进入命令提示符,新建一个黑名单文件

先输入用户名,再输入密码,然后就可以输入下面的命令了

1
sudo vi /etc/modprobe.d/blacklist-nouveau.conf

然后再输入一下命令(这里使用的是vi,不熟悉vi的同学可以百度一下,只需要知道几个最基本的命令就可以了,比如插入,删除,保存,退出等等。)

1
2
blacklist nouveau  
options nouveau modset=0

将上述两行输入完之后。就可以保存退出了(:wq)

执行以下命令

1
sudo update-initramfs -u

执行 lspci | grep nouveau查看是否有内容

1
lspci | grep nouveau

如果什么也没有,那就说明禁用成功了。

2. 安装显卡驱动

我安装的是(NVIDIA-Linux-x86_64-375.39.run)这个驱动

Ctrl+alt+F1,输入用户名,密码,进入命令行。

关闭图形界面

1
sudo service lightdm stop

安装驱动(当然先cd到驱动所在目录)

1
2
sudo chmod 755 NVIDIA-Linux-x86_64-375.39.run  //获取权限  
sudo ./NVIDIA-Linux-x86_64-375.39.run //安装驱动

在这里特别强调,安装NVIDIA驱动的时候:
(1)只有集显而没有独立显卡的时候才要加 –no-opengl-files,即输入:
sudo ./NVIDIA-Linux-x86_64-375.39.run --no-opengl-files (是为了避免循环登录的问题)
(2)若有独立显卡的则不需要加 –no-opengl-files,
直接按照上面的语句运行即可。如果的确出现了循环登录的问题,再卸掉NVIDIA驱动重新安装即可。

驱动安装完成后

1
sudo service lightdm start

然后Ctrl+Alt+A7返回正常界面

安装完成之后输入下面的命令

1
nvidia-smi

显示信息类似于下面的

3. 安装CUDA8.0

我安装的是cuda_8.0.61_375.26_linux.run CUDA Toolkit 8.0 - Feb 2017

cd到CUDA文件所在的目录

1
sudo sh cuda_8.0.61_375.26_linux.run

除了第二项“”是否安装显卡驱动“选择no之外,其他全部按照默认设定

安装过程显示如下信息

然后点空格键跳过这些说明,看到如下信息:

(Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 375.26?这一个必须选no,因为一般CUDA中带的驱动可能会老一些,选no这样就不会替代我们刚装好的驱动。)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Do you accept the previously read EULA?
accept/decline/quit: accept

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 375.26?
(y)es/(n)o/(q)uit: n (!!!注意:这里要选n)

Install the CUDA 8.0 Toolkit?
(y)es/(n)o/(q)uit: y

Enter Toolkit Location
[ default is /usr/local/cuda-8.0 ]:

Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: y

Install the CUDA 8.0 Samples?
(y)es/(n)o/(q)uit: y

Enter CUDA Samples Location
[ default is /home/username ]:

Installing the CUDA Toolkit in /usr/local/cuda-8.0 ...

Missing recommended library: libGLU.so
Missing recommended library: libX11.so
Missing recommended library: libXi.so
Missing recommended library: libXmu.so
Missing recommended library: libGL.so
Installing the CUDA Samples in /home/username ...
Copying samples to /home/username/NVIDIA_CUDA-8.0_Samples now...
Finished copying samples.
===========
= Summary =
===========
Driver: Not Selected
Toolkit: Installed in /usr/local/cuda-8.0
Samples: Installed in /home/username, but missing recommended libraries
Please make sure that

- PATH includes /usr/local/cuda-8.0/bin
- LD_LIBRARY_PATH includes /usr/local/cuda-8.0/lib64, or, add /usr/local/cuda-8.0/lib64 to /etc/ld.so.conf and run ldconfig as root

To uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-8.0/bin
Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-8.0/doc/pdf for detailed information on setting up CUDA.

***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 361.00 is required for CUDA 8.0 functionality to work.

To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
sudo <CudaInstaller>.run -silent -driver
Logfile is /tmp/cuda_install_8175.log

到此CUDA安装完毕

设置环境变量

1
sudo vi /etc/profile

在文件最后加上下面两句(如果你安装时使用的是默认路径的话)

1
2
export PATH=/usr/local/cuda-8.0/bin:$PATH  
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH

使环境变量立即生效

1
sudo ldconfig

因为接下来安装Samples需要make,所以得先装好一些库和依赖

1
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev  libglu1-mesa libglu1-mesa-dev libgl1-mesa-glx

安装CUDA自带的Samples

1
2
cd /usr/local/cuda/samples
sudo make all -j8

编译时间较久,编译完之后

1
2
cd ./bin/x86_64/linux/release 
./deviceQuery

若出现显卡信息,则说明安装完成了

查看cuda版本:

1
nvcc -V

会输出cuda的版本信息。如果cuda安装不成功,需要卸载重装,卸载命令如下,

若完成以上步骤,说明安装成功!

4. 安装Cudnn 5.1

下载后解压,然后得到一个cuda文件夹,(cd到cuda文件夹所在目录)然后执行下列命令

1
2
3
4
5
6
7
8
9
10
11
12
sudo cp cuda/include/cudnn.h /usr/local/cuda-8.0/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-8.0/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda-8.0/lib64/libcudnn*

# 建立软链接,尤其注意生成的libcdnn的版本,要根据自己的自行调整
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5 #删除原有动态文件
sudo ln -sf libcudnn.so.5.1.10 libcudnn.so.5
sudo ln -sf libcudnn.so.5 libcudnn.so
sudo ldconfig

sudo ldconfig /usr/local/cuda/lib64/ #这句话也要写,不然会报找不到libcudnn.so.5 动态链接文件的错误

然后按照以下步骤编译caffe,其中有报错,自己参考了这篇博客:

ubuntu16.04+gtx1060+cuda8.0+caffe安装、测试经历

以上都完成,才算成功安装好了cuda + cudnn


(若cuda没有安装成功,卸载方式如下)

1
2
sudo /usr/local/cuda-7.5/bin/uninstall_cuda_7.5.pl
sudo /usr/bin/nvidia-uninstall12

(若NVIDIA驱动没有安装成功,卸载方式如下)

(1)如果安装的是从官网下载的驱动,则重新运行run文件来卸载:

1
sudo ./NVIDIA-Linux-x86_64-390.25.run --uninstall

(不放心的话,就再输入一遍下面的语句)

(2)如果使用的是apt-get 安装,则输入:

1
sudo apt-get remove --purge nvidia*

5. 安装MATLAB2016b

注意:Ubuntu16.04安装MATLAB 2016b后,会和系统文件冲突,具体冲突文件:

MATLAB中的: /usr/local/MATLAB/R2016b/sys/os/glnxa64/libstdc++.so.6

系统文件 : /usr/lib/x86_64-linux-gnu/libstdc++.so.6

下面我们会备份MATLAB中的libstdc++.so.6 ,并将其删除,从而让Ubuntu使用系统自带的libstdc++.so.6文件。 这里在下面会有具体的操作方法。

6. 编译caffe

6.1 依赖包安装

1
2
3
4
5
6
7
8
9
10
sudo apt-get install build-essential #必要的编译工具依赖
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler

sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo pip install scikit-image
sudo pip install protobuf
sudo apt-get install libhdf5-serial-dev
sudo apt-get install libopenblas-dev

6.2 安装git,拉取caffe源码

进入你的工作目录,例如,我想把我的 caffe 放到 /home/lly/work/ 目录下

1
2
3
cd /home/lly/work/
sudo apt-get install git
git clone https://github.com/BVLC/caffe.git

6.3 编译caffe主体部分

终端输入 :

1
2
3
cd /home/lly/work/caffe
cp Makefile.config.example Makefile.config
sudo gedit Makefile.config

①将 USE_CUDNN := 1 取消注释,

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include 后面打上一个空格 ,然后添加 /usr/include/hdf5/serial 如果没有这一句可能会报一个找不到hdf5.h的错误,然后下面一行加一个空格后也要添加 /usr/lib/x86_64-linux-gnu/hdf5/serial/lib

1
2
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include  /usr/lib/x86_64-linux-gnu/hdf5/serial/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial/lib

然后开始编译:

终端输入

1
sudo make all -j4

测试编译是否成功:

先输入:

1
sudo ldconfig /usr/local/cuda/lib64

然后再输入:

1
2
sudo make test -j4
sudo make runtest -j4

caffe主体部分编译成功,我们再来编译MATLAB接口部分,这样易于排除错误来源

添加MATLAB 安装路径

1
MATLAB_DIR := /usr/local/MATLAB/R2016b

因为MATLAB的库文件和Ubuntu系统的库文件有冲突,我们先把MATLAB的的文件备份一下,然后再把系统的文件添加到环境变量中,这样系统就会默认使用系统的动态文件了。

在/usr/local/MATLAB/R2016b/sys/os/glnxa64下 把 libstdc++.so.6 重命名为 libstdc++.so.6_back

1
sudo mv libstdc++.so.6 libstdc++.so.6_back

然后编译MATLAB接口:

1
sudo make matcaffe -j8
1
2
3
4
5
MEX matlab/+caffe/private/caffe_.cpp
Building with 'g++'.
Warning: You are using gcc version '5.4.0'. The version of gcc is not supported. The version currently supported with MEX is '4.9.x'. For a list of currently supported compilers see: http://www.mathworks.com/support/compilers/current_release.
MEX completed successfully.
# 显示如下输出,编译成功,继续测试
1
sudo make mattest -j8

显示如下错误:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
cd matlab; /usr/local/MATLAB/R2016b/bin/matlab -nodisplay -r 'caffe.run_tests(), exit()'

< M A T L A B (R) >
Copyright 1984-2016 The MathWorks, Inc.
R2016b (9.1.0.441655) 64-bit (glnxa64)
September 7, 2016


To get started, type one of these: helpwin, helpdesk, or demo.
For product information, visit www.mathworks.com.

Invalid MEX-file
'/home/lly/work/caffe/matlab/+caffe/private/caffe_.mexa64':
libcudart.so.8.0: cannot open shared object file: No such file or
directory.

Error in caffe.set_mode_cpu (line 5)
caffe_('set_mode_cpu');

Error in caffe.run_tests (line 6)
caffe.set_mode_cpu();

这依然是MATLAB文件与系统文件冲突的问题,我们还是需要备份MATLAB的文件,使用Ubuntu系统自带的来编译:

我解决的方案是链接到Matlab路径下:(注意,原来/usr/local/MATLAB/R2016b/bin/glnxa64/这个目录下是没有.8.0的这三个动态链接文件的,只有.7.5的版本的这三个文件)

1
2
3
4
5
6
7
sudo ln -sf /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/MATLAB/R2016b/bin/glnxa64/libcudart.so.8.0

sudo ln -sf /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/MATLAB/R2016b/bin/glnxa64/libcublas.so.8.0

sudo ln -sf /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/MATLAB/R2016b/bin/glnxa64/libcurand.sosudo mv libopencv_imgproc.so.2.4.9 libopencv_imgproc.so.2.4.9.bak.8.0

sudo ldconfig #编译立即生效

但依然还是报错:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
cd matlab; /usr/local/MATLAB/R2016b/bin/matlab -nodisplay -r 'caffe.run_tests(), exit()'

< M A T L A B (R) >
Copyright 1984-2016 The MathWorks, Inc.
R2016b (9.1.0.441655) 64-bit (glnxa64)
September 7, 2016


To get started, type one of these: helpwin, helpdesk, or demo.
For product information, visit www.mathworks.com.

Invalid MEX-file
'/home/lly/work/caffe/matlab/+caffe/private/caffe_.mexa64':
/home/lly/work/caffe/matlab/+caffe/private/caffe_.mexa64: undefined
symbol:
_ZN2cv8imencodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_11_InputArrayERSt6vectorIhSaIhEERKSB_IiSaIiEE.

Error in caffe.set_mode_cpu (line 5)
caffe_('set_mode_cpu');

Error in caffe.run_tests (line 6)
caffe.set_mode_cpu();

简单粗暴的解决方法就是先将 /usr/local/MATLAB/R2016b/bin/glnxa64 中 以下三个文件备份,然后再删除其就可以了:

1
2
3
sudo mv libopencv_core.so.2.4 libopencv_core.so.2.4.bak
sudo mv libopencv_highgui.so.2.4 libopencv_highgui.so.2.4.bak
sudo mv libopencv_imgproc.so.2.4 libopencv_imgproc.so.2.4.bak

如果运行的时候还是会报找不到 libcudnn.so.5 的问题,就执行如下语句

1
sudo ldconfig /usr/local/cuda/lib64/  # 在上面已经说明了

参考博客:http://blog.csdn.net/m0_37407756/article/details/70789271

解决MATLAB中的 MEvent. CASE! 错误

在控制台输出:

1
!synclient HorizTwoFingerScroll=0

问题:MATLAB is selecting SOFTWARE OPENGL rendering.

https://www.jarviswang.me/?p=467

可以通过上面的操作,解决文件冲突问题。

问题:,MATLAB无法识别系统NVIDIA驱动,运行imshow() 都会报错:

1
2
3
4
MATLAB has experienced a low-level graphics error, and may not have drawn correctly.
Read about what you can do to prevent this issue at Resolving Low-Level Graphics Issues then restart MATLAB.
To share details of this issue with MathWorks technical support,
please include this file with your service request.

这个问题可能是NVIDIA驱动没有装好,自己出现这样的问题是因为NVIDIA驱动安装的时候使用了 --no-opengl-files 没有装OpenGL文件造成的。卸载原来的驱动,再重新装一遍NVIDIA驱动既可以解决问题。

Ubuntu 卸载MATLAB

1.删除MATLAB的安装目录

1
sudo rm -rf /home/lly/local/MATLAB/

(改成你自己的matlab路径)删除matlab文件夹。
2.在/home/lly(你的用户名)下面有.matlab 文件夹,删之这是一个隐藏文件夹,先要显示隐藏文件,才看得见。

1
ls -a -l

3.如果桌面有matlab快捷方式的话,把它删掉,

1
sudo remove /usr/share/applications/matlab.desktop

删除/usr/share/application /matlab.desktop,这里matlab.desktop改成你自己安装时起的名字。
4.查找/下含有matlab的所有文件

1
sudo find / -name matlab


7. 安装Anaconda 3

Anaconda官网 下载Python3.6版本,然后打开命令行进入安装包目录:

1
cd ~/Download

输入以下命令安装,由于我需要安装在/opt目录,所以加上了sudo

1
sudo bash Anaconda3-5.0.0-Linux-x86_64.sh

会提示一下信息

1
2
3
4
5
6
Welcome to Anaconda3 5.0.0

In order to continue the installation process, please review the license
agreement.
Please, press ENTER to continue
>>>

输入回车继续安装,接下来提示一些授权信息,输入yes 继续

1
2
Do you accept the license terms? [yes|no]
[no] >>> yes

接下来指定安装目录,不指定的话会安装到默认路径下。

1
2
3
4
5
6
7
8
Anaconda3 will now be installed into this location:
/home/lly/anaconda3

- Press ENTER to confirm the location
- Press CTRL-C to abort the installation
- Or specify a different location below

[/home/lly/anaconda3] >>> /opt/anaconda3

然后稍等一会,提示是否要将Anaconda的安装路径添加到PATH环境变量中,输入yes就好了。

1
2
3
4
installation finished.
Do you wish the installer to prepend the Anaconda3 install location
to PATH in your /home/hj/.bashrc ? [yes|no]
[no] >>> yes

若输入no,需要手动在.bashrc文件中添加以下内容,然后source ~/.bashrc

1
export PATH="/opt/anaconda3/bin:$PATH"

现在在终端中启动Python,发现已经替换成Anaconda的Python了

1
2
3
4
5
lly@lly:~$ python
Python 3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 18:10:19)
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

若没有生效,则终端输入,然后重开一个终端即可生效。

1
source ~/.bashrc

输入以下命令可以开启anaconda-navigator,这里面集成了Anaconda自带的一些工具。

1
anaconda-navigator

补充知识 conda基本命令 (具体细节可参考印象笔记)

  • conda基本命令:
  • conda --version 查看当前Anaconda版本
  • conda info -e 查看当前环境版本
  • conda create -n python27 python=2.7 创建一个python2.7版本的开发环境
  • activate python27 切换到 python2.7的版本分支(环境)
  • deactivate 切换回 root分支(环境)
  • conda remove -n python27 --all 删除一个分支(环境)
  • conda create -n clonedpython27 --clone python27 克隆python27这个分支,并将新分支命名为clonedpython27

8. 使用Anaconda安装 Tensorflow

在conda环境中安装tensorflow的好处是可以便捷的管理tensorflow的依赖包。

8.1 建立一个tensorflow的运行环境

注意:这里最好通过管理员方式打开 Anaconda Prompt 进行安装,这样可以避免很多错误。

建立一个 命名为tensorflowde 的conda 环境,指定Python版本是3.5 。

1
2
# Python 3.5  
conda create -n tensorflow python=3.5

如果想安装其他环境下的tensorflow 则自己选择Python版本即可。

1
2
3
4
5
# Python 2.7  
conda create -n tensorflow python=2.7

# Python 3.4
conda create -n tensorflow python=3.4

注意,不要重复执行多次创建名为tensorflow的conda环境。以上语句选择自己需要Python版本的执行一条即可。

8.2 在conda环境中安装tensorflow

在conda环境中安装tensorflow的好处是可以便捷的管理tensorflow的依赖包。分为两个步骤:激活上一步建立的名为tensorflow的conda环境;用conda或者pip工具安装Tensorflow,作者选择的是pip方式。

  • 查看当前环境
1
2
3
4
5
conda info -e
# conda environments:
#
tensorflow /home/lly/.conda/envs/tensorflow
base * /opt/anaconda3

可以看到,我们当前所在的是默认的base环境

  • 激活名为tensorflow 的 conda环境:
1
source activate tensorflow

然后可以根据需要安装的不同的tensorflow版本选择对应的一条环境变量设置export语句(操作系统,Python版本,CPU版本还是CPU+GPU版本)这里我们选择Ubuntu操作系统,Python3.5,GPU版本 1.2版本的tensorflow进行安装。参考博客 官网教程

(注意:这里你要能找到自己对应cuda 和 cudnn版本的源才行)

官网版本详情

作者自己直接使用pip 进行安装了tensorflow-gpu==1.2版本的

1
pip install tensorflow-gpu==1.2

如果提示连接网络失败,则根据提示更新一下pip再进行安装tensorflow即可。

期间自己忽略了自己cuda8.0和cudnn5.1版本问题,直接默认安装了Tensorflow官网教程中的源安装的,当时是1.6版本的tensorflow,然后在测试tensorflow的时候就会报错。类似如下错误:

1
libcudnn.so.8:cannot open sharedobject file: No such file or directory

然后降级到了1.2版本才正常使用,降级方法:参考

1
2
pip uninstall tensorflow-gpu
pip install tensorflow-gpu==1.2
  • 测试

在tensorflow的conda环境中进行测试,命令行输入python,进入tensorflow的python环境

1
2
3
4
5
(tensorflow) lly@lly:~$ python
Python 3.5.5 |Anaconda, Inc.| (default, Mar 12 2018, 23:12:44)
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

然后输入:

1
2
3
4
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

如果没有报错,输出了 b'Hello, TensorFlow!' 并输出一些警告信息,则说明安装成功:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
2018-03-21 17:10:38.087816: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
2018-03-21 17:10:38.087834: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
2018-03-21 17:10:38.087858: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
2018-03-21 17:10:38.087863: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.
2018-03-21 17:10:38.087888: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations.
2018-03-21 17:10:38.206568: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:893] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2018-03-21 17:10:38.206856: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 0 with properties:
name: GeForce GTX 1070
major: 6 minor: 1 memoryClockRate (GHz) 1.695
pciBusID 0000:01:00.0
Total memory: 7.92GiB
Free memory: 7.14GiB
2018-03-21 17:10:38.206872: I tensorflow/core/common_runtime/gpu/gpu_device.cc:961] DMA: 0
2018-03-21 17:10:38.206877: I tensorflow/core/common_runtime/gpu/gpu_device.cc:971] 0: Y
2018-03-21 17:10:38.206888: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1070, pci bus id: 0000:01:00.0)
>>> print(sess.run(hello))
b'Hello, TensorFlow!'
>>>

9. 安装java jdk

我们要安装PyCharm必须先安装java jdk才行,具体安装命令如下:

安装命令:

1
2
3
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

安装过程中会出现oracle license对话框,选择 是

安装完成后,输入 java -version 或者 javac -version 查看是否安装成功。得到类似以下输出,表示安装成功。

1
2
3
4
lly@lly:~$ java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

10. 安装Pycharm

Pycharm官网 下载Community免费版

终端进入下载目录,并解压:

1
2
cd Downloads/   
tar xfz pycharm-*.tar.gz

运行解压文件中bin目录下的pycharm.sh 文件

1
2
cd pycharm-community-3.4.1/bin/
./pycharm.sh

安装过程中询问是否导入settings,选择不导入—>OK,然后全部是默认,根据提示选择。

设置快捷方式

在Ubuntu下,每次都要找到 pycharm.sh所在的文件夹,执行./pycharm.sh,非常麻烦。最好能创建一个快捷方式。Ubuntu的快捷方式都放在/usr/share/applications,首先在该目录下创建一个Pycharm.desktop

1
sudo gedit /usr/share/applications/Pycharm.desktop

然后输入以下内容,注意Exec和Icon需要找到正确的路径:

1
2
3
4
5
6
7
8
9
[Desktop Entry]
Type=Application
Name=Pycharm
GenericName=Pycharm3
Comment=Pycharm3:The Python IDE
Exec="/home/lly/Downloads/pycharm-community-2017.3.4/bin/pycharm.sh" %f
Icon=/home/lly/Downloads/pycharm-community-2017.3.4/bin/pycharm.png
Terminal=pycharm
Categories=Pycharm;

然后就可以在自己的应用中找到Pycharm了。

10.1 在PyCharm中配置TensorFlow环境

要在pycharm下使用tensorflow,要设置好pycharm下解释器interpreter的路径File --> Setting --> Project --> Project Interpreter,这里也就是tensorflow的路径,如下图所示:

在PyCharm中测试该代码

1
2
3
4
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))

运行后会提示警告,但这个警告并没有影响

1
W c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations.

我们可以通过在上面代码之前,添加两条语句,忽略掉警告

1
2
3
## 加上这两句,可以不显示警告
# import os
# os.environ['TF_CPP_MIN_LOG_LEVEL']='2'

11. Reference