刚在Jetson nano上面配置好了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