ultrascale(我用的是zcu111)基本结构仍然是ARM+FPGA。最近想在板子上跑CNN,由于训练集较小,故打算直接在ARM上训练,因此需要在linux(pynq)环境下install深度学习框架,经过尝试之后成功在ARM上配置好了tensorflow,将过程简单记录如下:
组件:
- zcu111 v2.5 image
- tensorflow 1.10.1
step1 Burn pynq image
由于代码中内存分配用到了XInk等模块,而最新的pynq v2.7 image已经舍弃该模块,会import失败,因此选择烧写v2.5版本(当然V2.7也完全没问题,只是需要使用其他模块),下载地址:
Releases · Xilinx/PYNQ · GitHub
具体烧写过程不再赘述。
step2 Updata and install related packages
这一步参考:(24条消息) Xilinx-PYNQ_Z2系列-学习笔记(13):在PYNQ-Z2上安装Keras/Tensorflow 库的方法_赵小琛在路上的博客-CSDN博客_pynq tensorflow
运行如下指令更新系统软件:
sudo apt-get update
sudo apt-get upgrade
安装python和pip:
sudo apt-get install python3-pip python3-dev
pip3 install --upgrade pip
安装python科学套件:
sudo apt-get install python3-numpy python3-scipy python3-matplotlib python3-yaml
sudo apt-get install libhdf5-serial-dev
将python环境由2.7变为3.6:
sudo rm /usr/bin/python
sudo ln -s /usr/bin/python3 /usr/bin/python
step3 Install Tensorflow
关键的一步来了,首先需要清楚板卡的ARM是哪一种架构,zcu111搭载的是cortex-A53和Cortex-R5,均为64bit的aarch64架构,参考这一篇博客进行下载(建议在jupyter terminal中进行下载):
aarch64架构下安装tensorflow详细过程 - 小大大小 - 博客园 (cnblogs.com)
下载完成以后,还可能出现以下问题,给出一般解决方案:
(1)在python环境中import tensorflow,报错信息为numpy的版本不兼容,因此执行以下指令安装满足要求的numpy版本即可(我安装的是1.14.5):
sudo pip3 install numpy=1.14.5
(2)如果在串口终端进行下载,那么在jupyter中import tensorflow,可能返回:no module named tensorflow,在jupyter terminal中和串口调试软件的python环境中依次输入以下指令,查看环境信息:
import sys
sys.path
如果两个地方显示的路径不完全相同,原因可能是jupyter kernel的路径未包含tensorflow安装路径!这也就是为什么建议在jupyter terminal中install的原因,解决办法是卸载-重下。