物体检测0:Linux下搭建TensorFlow 运行环境(TF
测试环境
64 位,16G 笔记本
显卡 GeForce 940Mx ,计算能力 5.0
VirtualBox 图形用户界面 版本 6.1.2 r135662 (Qt5.6.2)
LinuxMint 19.3
在VirtalBox安装LinuxMint
参照网上按照,这里不赘述
开始安装 anaconda
进入LinuxMint, 在以下地址下载anaconda,网站会根据你的系统匹配合适的版本
https://www.anaconda.com/distribution/#download-section
这里用的是支持py2.7的Anaconda2 2019.10
下载完成后,进入下载完成的目录
~/Downloads$ bash Anaconda2-2019.10-Linux-x86_64.sh
全程ENTER和yes
环境变量配置
默认安装在当前用户的home目录下;注意,最后一步,是问你要不要添加环境变量,默认是NO,最好选择YES.
Preparing transaction: done
Executing transaction: done
installation finished.
Do you wish the installer to initialize Anaconda2
by running conda init? [yes|no]
[no] >>> yes
安装完毕之后,运行以下命令使得环境设置生效:
source .bashrc
可以用如下命令查看环境变量是否添加成功:
gedit .bashrc
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/jiadongfeng/anaconda2/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/home/jiadongfeng/anaconda2/etc/profile.d/conda.sh" ]; then
. "/home/jiadongfeng/anaconda2/etc/profile.d/conda.sh"
else
export PATH="/home/jiadongfeng/anaconda2/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<
export PATH="/home/jiadongfeng/anaconda2/bin:$PATH"
表示环境变量设置成功
切换资源下载源
到这里,就安装完毕了,不过呢,由于国内访问国外的官方源实在太慢了,所以我们需要把Anaconda的源切换到国内的
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
切换python引用源
本质上,Anaconda就是一个python发行版,因此,要使用Anaconda, 无非就是配置环境变量,使我在终端中敲python命令时,执行的是anaconda里的那个python程序及环境,而不是linux系统内置的那个python程序环境。
在终端里执行如下命令即可完成配置,这是由anaconda为我们提供的快捷设置或切换环境的脚本工具。
source activate root
切换成功后,通过以下命令查看python指向的位置
base) jiadongfeng@jiadongfeng-VirtualBox:~$ which python
/home/jiadongfeng/anaconda2/bin/python
安装TensorFlow
$ conda env list
# conda environments:
#
base * /home/jiadongfeng/anaconda2
anaconda默认一个名为base的python环境,
创建与启动名为tensorflow的python环境。
该步骤可以不执行,会下载很多依赖包,用默认的base环境即可
(base) jiadongfeng:~$ conda create -n tensorflow141 python=2.7
//activte your env
(base) jiadongfeng:~$ conda activate tensorflow141
(tensorflow-gpu) jiadongfeng:~$
查看tensorflow包信息
jiadongfeng:~$ anaconda show anaconda/tensorflow
Using Anaconda API: https://api.anaconda.org
Name: tensorflow
Summary: TensorFlow is a machine learning library.
Access: public
Package Types: conda
Versions:
+ 0.10.0rc0
+ 1.0.1
+ 1.1.0
+ 1.2.1
+ 1.3.0
+ 1.4.1
+ 1.5.0
+ 1.6.0
+ 1.7.0
+ 1.7.1
+ 1.8.0
+ 1.9.0
+ 1.10.0
+ 1.11.0
+ 1.12.0
+ 1.13.1
+ 1.14.0
+ 2.0.0
+ 1.15.0
To install this package with conda run:
conda install --channel https://conda.anaconda.org/anaconda tensorflow
根据包信息最后的提示进行安装, 这里没有使用官方的channel,使用的是上方设置的默认的清华大学的源;
为什么安装1.14版本,因为亲测,在这个版本下,物体检测API才没有问题
conda install tensorflow=1.14.0
如果想检查是否安装成功,可以进入python来import试一试:
import tensorflow as tf
hello = tf.constant('Hello,tensorflow')
session = tf.Session()
print(session.run(hello))
Hello,tensorflow
为了编码方便,我们可以启动jupyter客户端启动编码工具
启动命令,启动后,会遇到import tensorflow报错,参考下面的报错分析2解决
jupyter notebook
至此,tensorflow安装和测试完毕
报错分析
- conda install tensorflow 出现段错误(segmentation fault)
方法1:
conda clean -a(这个操作好像是删除所有的包;执行了这个操作后,再使用conda install重新安装;缺点是,
已经安装成功的也被删除
方法2:
conda install +某个包 出现段错误是因为之前conda install的时候由于网络问题,这个包只下载了一部分;解决方法是再…/anaconda2/pkgs/找到需要安装的包的zip文件,然后删除,然后再conda install这个包就没问题了
前提是你知道哪些包没有安装成功
如下,我们的报错就是因为以下四个包没有下载完毕导致的。将以下四个包删除,再重新install即可
Downloading and Extracting Packages
...
cudnn-6.0.21 | 178.2 MB | ########################4 | 44%
cudatoolkit-8.0 | 322.4 MB | 4 | 1%
mkl-2017.0.3 | 129.5 MB | ##6 | 5%
tensorflow-gpu-base- | 55.4 MB | ###############1 | 27%
- 无法在jupyter notebook里面引入tensorflow
我在linux系统下安装的anaconda3,然后并在里面使用env安装的tensorflow,之前安装的jupyter notebook并不是在我的tensorflow环境下安装的,所以你无法引入tensorflow。
这是我在安装之前的展示的jupyter的结果:
很显然,我的jupyter是anaconda自带的,并不是tensorflow下面的jupyter,所以需要重新的安装。
tensorflow141) jiadongfeng:~$ which ipython
/home/jiadongfeng/anaconda2/envs/tensorflow141/bin/ipython
tensorflow141) jiadongfeng:~$ which jupyter
/home/jiadongfeng/anaconda2/envs/tensorflow141/bin/jupyter
下面是安装的命令:
conda install ipython
conda install jupyter
这样你就安装好了,可以再输入上面的三行命令来查看:
tensorflow141) jiadongfeng:~$ which python
/home/jiadongfeng/anaconda2/envs/tensorflow141/bin/python
(tensorflow141) jiadongfeng:~$ which ipython
/home/jiadongfeng/anaconda2/envs/tensorflow141/bin/ipython
(tensorflow141) jiadongfeng:~$ which jupyter
/home/jiadongfeng/anaconda2/envs/tensorflow141/bin/jupyter
经过以上处理后,再在jupyter notebook中就可以验证成功了
journalctl -xb | egrep -i 'killed process'
Feb 28 20:28:44 jiadongfeng-VirtualBox kernel: Killed process 1612 (train.py) total-vm:6352780kB, anon-rss:3783324kB, file-rss:0kB, shmem-rss:0kB
Feb 28 20:43:14 jiadongfeng-VirtualBox kernel: Killed process 1748 (train.py) total-vm:6257152kB, anon-rss:3692180kB, file-rss:0kB, shmem-rss:0kB
- 卸载Anaconda
如果有一天,你不需要Anaconda了,请使用以下命令卸载
安装 Anaconda-Clean package
conda install anaconda-clean
接着输入命令行进行卸载:
anaconda-clean --yes