最近在学习量化,想先复现一下Dorefa,官网确实有源代码,貌似挺简单,但当我真正去跑的时候,“坑之大,不知其几千里也!”,特来记录一番。

tensorpack需要的环境:

  • Python 3.3+.
  • Python bindings for OpenCV. (这是大坑)
  • TensorFlow ≥ 1.5, < 2

首先想到的是在服务器上跑,但服务器是docker镜像,而且全是tf2.0以上,为止奈何?

先在自己window下跑通简单的样例吧,之后再想办法

一、失败尝试v1

windows里刚好装了anaconda,可以比较方便配置环境,于是便装了python3.6(3.7以上的版本跑不了tenflow1.x)和Tensorflow 1.8。本想再装个jupyter好调试,结果python3.6对应的jupyter是5.0版本,不是6.0版本,装好后总是连接不上。最后幸好可以在命令行跑,每次跑的过程会说缺乏依赖,我最开始憨憨地下载“tensorpack”的github,然后在目录下运行样例,结果好多模块加载路径错误,其实直接可以pip安装tensorpack的包:

conda create -n tf1.8 python=3.6
conda activate  tf1.8
// 我电脑没有GPU
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow==1.8.0 

pip install tensorpack //直接安装就行
pip install scipy  // 必要计算库
pip install opencv-python //图像预处理的包

再python 运行dorefa的代码,确实下载了数据集,最后卡在了 AssertionError: ZMQ IPC doesn't support windows! 也就是window不支持ZMQ本地进程间通信传输协议! 还是要用linux!

二、失败尝试v2

刚好也有ubuntu的虚拟机,装anaconda,配置环境试试。anaconda清华镜像,下载很快配置好环境之后,确实运行成功,开始训练,但是悲剧又来了!内存不够,权重加载不了!还是得用服务器啊!

三、成功跑通,仍有大坑

虽然服务器的镜像都是tf2.0以上,但进入镜像后是root权限,可以随意安装软件,因此毫不犹豫装了anaconda,并且配置环境,先和v2一致,看看能否跑通,奇怪的是,一直出现这个错误: module 'tensorpack.dataflow.imgaug' has no attribute 'Resize' 明明装了opencv-python,为什么老是这样,虚拟机了都可以跑通!于是我做了简单的测试,在python里import cv2,发现报错:ImportError: libGL.so.1: cannot open shared object file: No such file or directory, 原来是docker容器缺少依赖,需要安装一个包!!!

apt update
apt install libgl1-mesa-glx

这真是个大坑!这要跑通还真不简单,一路那么多坑!最后罗列需要的命令:

tensorflow 的版本对应python和cuda conda更换源 pip更换源

conda create -n tf1.14 python=3.6
conda activate  tf1.14
//服务器有GPU,可以登陆网站看有哪些版本的tensorflow
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow_gpu==1.14.0 

pip install tensorpack //直接安装就行
pip install scipy  // 必要计算库
pip install opencv-python //图像预处理的包

最后终于跑起来了!

image.png

标签: none

添加新评论