趁着帮师妹看Github上的一个项目,督促自己学习一下Python下训练神经网络的一整套流程。没想到在一开头就遇到了不少问题。首先是Pycharm中导入Github项目的问题,还有安装tensorflow的问题,之后又遇到了多种版本的Python共存的问题。在这里记录一下,包括一些开源镜像,方便日后查阅。
Justin-Tan实现了一篇文章提出的基于GAN网络压缩图像的目标。原理基本就是生成一幅尽可能和原图相似的图像,让鉴别器难以分辨,同时使得图像占用内存空间尽可能小。可以在大小比常规方法缩小一半的同时,图像质量提高到两倍。
说到git,这是个版本控制系统,Linux自己用c写成的,因为需要协同工作,每个人都可能对某部分进行改动,生成不同版本,有了Git就可以方便地回到每个版本。当然有其他版本控制系统如SVN,但是代码托管平台Github只支持Git,这也是Github得名的原因。之前使用Github大多是c++代码,都是下载了zip压缩包,然后到本地重新进行编译。但是对于Python还没怎么接触。看到一篇博客,发现可以直接在Pycharm通过版本控制从Github上面clone得到项目工程。简单来说就是在setting中的version control中的Github中登录自己的账号,并且明确自己安装的Git.exe的路径。
这个项目依赖于TensorFlow1.8.但是在pycharm中却一直安装失败(其实也是在后台执行pip install tensorflow),升级pip之后仍然报错; AttributeError: module 'pip' has no attribute 'main'。参考将pycharm安装目录下 helpers/packaging_tool.py文件的install和uninstall部分进行修改后,仍然有错:Non-zero exit code (1)。这就是说明pycharm没有找到合适的TensorFlow版本。其实安装package最重要的就是版本对应和网络环境。
这就需要镜像。镜像的使用有两种方法,一种是让电脑在镜像中自动寻找匹配的版本:在Terminal端使用:
pip install pandas -i https://pypi.douban.com/simple #利用豆瓣镜像源自动选择合适版本,
pip install tensorflow -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com #或者使用阿里云
一种需要手动寻找合适的版本。我从加州欧文大学的一个生物医学荧光光谱学研究中心下载轮子(wheel),安装命令可以在PowerShell中执行,也可以在Git Bash中执行,只要要cd到whl所在路径下(也可直接将文件拖动到)。按照命令也很简单:
pip install XXXXX.whl #两种方法都可以
pip install --upgrade tensorflow-1.0.0-cp35-cp35m-win_amd64.whl #会按照一些依赖工具
现在说明一下什么样子的才是合适的版本。1.tensorflow只支持64位的python,机器也必须是64位的。2.tensorflow的版本与python有关,cp36意味着对应的python版本是3.6.。3.太老的CPU支持不了太新版本的tensorflow,因为缺少VAX的指令集。
关于1,2,无非就是重新安装一个新的python版本,可参考教程。或者卸载原来的tensorflow:pip uninstall tensorflow。麻烦的是如果本地存在多个python版本,如何使用pip指令。以我自己为例,两个python3.6和3.7路径不同,但安装目录下两个可执行文件名都是python.exe。为了在cmd中可以由用户决定进入哪种python,可以将两种python.exe分别重命名为python36.exe和python37.exe。同样的,在使用pip安装whl的时候也要声明要将whl安装在哪个版本的python下,如果依然直接使用pip install XXX就会报错,平台不支持,因为不同版本的python都包含pip。自己尝试直接将pip重命名,依然不对。正确做法:Python36 –m pip install XXX
第三点也是个大坑,因为我本来都安装成功了,结果在尝试import时报错:ImportError: DLL load failed with error code -1073741795。原因就是之前提到的,硬件条件太差,不仅没有GPU加速,CPU也太落伍,不支持新的tensorflow。在tintinMovie的github(https://github.com/tintinmovie/Guides_and_Solutions/blob/master/Tensorflow%20-%20No%20module%20named%20'_pywrap_tensorflow_internal'.md)中中解释了这个问题,在其链接中可以查看自己的CPU是否支持VAX。如果真的不支持,一种方法是使用低版本的tf:pip install tensorflow==1.5。但在这个项目中要求使用的tf版本是1.8的,该怎么办呢?这就要多谢fo40225大神重新编译的基于SSE指令集的tensorflow版本了。
到这里,应该就可以顺利地安装成功了。因为是在cmd命令行安装的,为了在pycharm中使用模块,可以在setting中勾选如下选项,继承全局package。
总体来讲,pycharm安装package的方法很傻瓜,应付大部分第三方模块是足够的,只不过遇到网络问题或者版本问题就需要自己多动几下手啦。希望能多少帮助到一些朋友。