通俗易懂的机器学习——在Jetson nano(ubuntu)配置tensorflow

本文已参与「新人创作礼」活动

注意事项

1)操作系统镜像刚烧进去开机时选择语言一定要全部选成英文,如果选中文可能会因此出现“build wheel error”之类的问题。 2)尽量使用jetson nano提供的下载源,不要去做没必要的换源。如果某个包真的需要换源才能下载,建议只在下载那个包的适合换源。 3)在下载包前要确定在jetson nano中他的名称,如anaconda在jetson nano适用的版本就和之前的安装方式不同。 4)在下载tensorflow之前不要下载numpy等tensorflow的依赖包,以避免版本冲突带来的问题。

如果您不幸遇到了以上几种问题,能够改正尽量改正,如果改正不了就只好重新烧录了。

安装tensorfow

这里需要注意的是Jetson nano的tensorflow可以按照官网的方式去下载,我的jetson nano自带cuda-10.2和cuda10,第二种方法为官网按照方法 官网如下: Official TensorFlow for Jetson Nano!

准备工作

1.查看ubuntu版本

cat /etc/issue
复制代码

lsb_release -a
复制代码

2.检查cuda

cat /usr/local/cuda/version.txt
复制代码

jetson nano中本身自带cuda,首先要找到cuda所在的文件夹看清楚自己cuda的版本,我这里的版本是cuda10,但是网上的各种配置环境变量都是用的cuda10.0,虽然版本一样,但是环境找不到cuda10,所以配置前一定要看清楚

将符合自己板子的cuda写入环境变量

sudo gedit  ~/.bashrc
复制代码

在打开的文件最后填上

export CUDA_HOME=/usr/local/cuda-10
export LD_LIBRARY_PATH=/usr/local/cuda-10/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-10/bin:$PATH
复制代码

(注:因为博主的板子里面cuda10的文件名称为cuda10而不是cuda10.0,注意配置时写的cuda版本一定要和文件夹名称一模一样)

保存后执行

source ~/.bashrc
复制代码

3.修改pip

sudo apt-get update
sudo apt-get full-upgrade
sudo apt-get install python3-pip python3-dev
python3 -m pip install --upgrade pip  #升级pip
sudo gedit /usr/bin/pip3   #打开pip3文件
复制代码

将原来的

from pip import main
if __name__ == '__main__':
    sys.exit(main())
复制代码

改为

from pip import __main__
if __name__ == '__main__':
    sys.exit(__main__._main())
复制代码

方法一

sudo apt-get install python3-pip libhdf5-serial-dev hdf5-tools
pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v42 tensorflow-gpu==1.13.1+nv19.3 --user
复制代码

方法二(官网方法)

sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev liblapack-dev libblas-dev gfortran
sudo apt-get install python3-pip
sudo pip3 install -U pip testresources setuptools==49.6.0
sudo pip3 install -U numpy==1.16.1 future==0.18.2 mock==3.0.5 h5py==2.10.0 keras_preprocessing==1.1.1 keras_applications==1.0.8 gast==0.2.2 futures protobuf pybind11
sudo pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v45 tensorflow
复制代码

方法三

# 2. 安装依赖文件包,由于使用刚刷完镜像的板子,所以很多依赖包需要安装。

 sudo apt-get install python3-scipy 
 sudo apt-get install python3-pandas
 sudo apt-get install python3-sklearn
 sudo apt-get install libhdf5-serial-dev hdf5-tools

# 可以提前安装依赖包,如果网络情况好,可以跳过一下步骤
 sudo pip3 install Cython  -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
 sudo pip3 install absl-py==0.7.0
 sudo pip3 install gast==0.2.2
 sudo pip3 install protobuf==3.11.2
 sudo pip3 install wrapt==1.11.2
 sudo pip3 install astor==0.8.1
 sudo pip3 install google-pasta==0.1.8
 sudo pip3 install keras  -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
 sudo pip3 install grpcio-1.26.0.tar.gz
sudo pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v42 tensorflow-gpu==1.14.0+nv19.10
复制代码

注意:所有带sudo的命令都必须是以管理员身份运行的

因为没有换用国内镜像源,等待时间稍长一点,但为了防止出错这是值得的。如果因为超时有些时候是网络原因,可以先多试几次。

Segmentation fault (core dumped)

>>> import tensorflow as tf
Segmentation fault (core dumped)
复制代码

如果出现这种情况,博主遇到的有两种可能 1.scipy版本不合适 在这种情况下可以卸载重装

sudo pip uninstall scipy
sudo apt-get install python3-scipy 
复制代码

2.cudnn或cuda配置问题 检查一下是否安装了cudnn以及cuda的环境变量是否正确。 cudnn连接地址 选择适合自己版本的cudnn(注意,jetson nano 需要的版本的aarch)之后选择cuDNN Library for Linux那一个 解压后执行如下命令将文件复制到cuda的文件中

# 复制cudnn头文件
sudo cp cuda/include/* /usr/local/cuda-10.0/include/
# 复制cudnn的库
sudo cp cuda/lib64/* /usr/local/cuda-10.0/lib64/
# 添加可执行权限
sudo chmod +x /usr/local/cuda-10.0/include/cudnn.h
sudo chmod +x /usr/local/cuda-10.0/lib64/libcudnn*
复制代码

验证是否成功

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
复制代码

如果没有报错说明成功了

缺少如libcublas.so.10.0的问题

遇到这种问题可以找到cuda里面自带的版本相近的文件直接复制并且重命名就行,这里以libcublas.so.10.0,libcudart.so.10.0,libcusolver.so.10.0举例。

cd /usr/local/cuda-10/lib64
sudo cp libcublas.so.10 libcublas.so.10.0
sudo cp libcudart.so.10 libcudart.so.10.0
sudo cp libcusolver.so.10 libcusolver.so.10.0
复制代码

解决Illegal instruction(core dumped)报错

当我在python3中import tensorflow时,出现如下错误:Illegal instruction(core dumped)

1)打开bashrc文件

sudo gedit ~/.bashrc
复制代码

2)在bashrc的最后一行添加

export OPENBLAS_CORETYPE=ARMV8
复制代码

3)保存对bashrc的修改 4)如果希望修改马上生效,输入以下命令

source ~/.bashrc
复制代码

后面可以自行安装一些需要的包,如PIL

sudo pip install pillow
复制代码

猜你喜欢

转载自juejin.im/post/7078465988093542414