目前,Tensorflow库正在经历着从推出以来最大规模的变化。TensorFLow 2.0 已经推出 beta 版本,同 TensorFlow 1.x 版本相比它带来了太多的改变。最大的问题在于不兼容了好多TensorFlow 1.x 版本的API。
怎么办?
版本选择
虽然TensorFlow的2.0版本中,增加了很多光鲜靓丽的新功能。但是TensorFlow 1.x目前比较稳定,建议使用TensorFlow 1.x版本开发实际项目,并跟进2.x版本所更新的技术。等到2.x版本更为稳定的时候,才考虑将实际项目切换到2.x。
应对方案
TensorFlow框架的1.x版本与2.x版本差异较大。建议采用1.x与2.x版本共存的方式来解决。
Anaconda创建虚拟环境
-
查看目前的虚拟环境
使用
conda info --envs
查看当前环境信息base * /anaconda3
显示结果中可以看到,当前虚环境的名字是“base”,是Anaconda默认的Python环境。
-
使用
python --version
来查看Python版本Python 3.7.3
可以知道,当前Python版本为3.7.3。
-
创建Python虚拟环境
conda create --name tf2 python=3.7.3
The following packages will be downloaded: package | build ---------------------------|----------------- ca-certificates-2019.5.15 | 0 133 KB certifi-2019.6.16 | py37_0 154 KB openssl-1.1.1c | h1de35cc_1 3.4 MB pip-19.1.1 | py37_0 1.8 MB setuptools-41.0.1 | py37_0 635 KB sqlite-3.29.0 | ha441bb4_0 2.4 MB wheel-0.33.4 | py37_0 39 KB ------------------------------------------------------------ Total: 8.5 MB The following NEW packages will be INSTALLED: ca-certificates pkgs/main/osx-64::ca-certificates-2019.5.15-0 certifi pkgs/main/osx-64::certifi-2019.6.16-py37_0 libcxx pkgs/main/osx-64::libcxx-4.0.1-hcfea43d_1 libcxxabi pkgs/main/osx-64::libcxxabi-4.0.1-hcfea43d_1 libedit pkgs/main/osx-64::libedit-3.1.20181209-hb402a30_0 libffi pkgs/main/osx-64::libffi-3.2.1-h475c297_4 ncurses pkgs/main/osx-64::ncurses-6.1-h0a44026_1 openssl pkgs/main/osx-64::openssl-1.1.1c-h1de35cc_1 pip pkgs/main/osx-64::pip-19.1.1-py37_0 python pkgs/main/osx-64::python-3.7.3-h359304d_0 readline pkgs/main/osx-64::readline-7.0-h1de35cc_5 setuptools pkgs/main/osx-64::setuptools-41.0.1-py37_0 sqlite pkgs/main/osx-64::sqlite-3.29.0-ha441bb4_0 tk pkgs/main/osx-64::tk-8.6.8-ha441bb4_0 wheel pkgs/main/osx-64::wheel-0.33.4-py37_0 xz pkgs/main/osx-64::xz-5.2.4-h1de35cc_4 zlib pkgs/main/osx-64::zlib-1.2.11-h1de35cc_3
Proceed ([y]/n)?
创建过程中会提示是否安装对应软件包,输入“Y”,则下载及安装软件包。
Downloading and Extracting Packages wheel-0.33.4 | 39 KB | ############################################################ | 100% openssl-1.1.1c | 3.4 MB | ############################################################ | 100% certifi-2019.6.16 | 154 KB | ############################################################ | 100% setuptools-41.0.1 | 635 KB | ############################################################ | 100% pip-19.1.1 | 1.8 MB | ############################################################ | 100% sqlite-3.29.0 | 2.4 MB | ############################################################ | 100% ca-certificates-2019 | 133 KB | ############################################################ | 100% Preparing transaction: done Verifying transaction: done Executing transaction: done # # To activate this environment, use # # $ conda activate tf2 # # To deactivate an active environment, use # # $ conda deactivate
虚拟环境
tf2
创建成功。conda activate tf2 #将虚拟环境tf2作为当前的Python环境 conda deactivate #使用默认的Python环境
如果使用Windows,激活和取消激活虚拟环境的命令如下:
activate tf2 deactivate
-
检查Python虚环境是否创建成功
conda info --envs
显示:
# conda environments: # base * /anaconda3 tf2 /anaconda3/envs/tf2
可以看到,虚环境中多了一个“tf2”,表示创建成功。
-
删除Python虚环境
conda remove --name tf2 --all
运行以上命令即可删除
tf2
虚拟环境,不会有任何显示。可以使用conda info --envs
再次检查虚拟环境情况。 -
在Python虚环境中安装TensorFlow 2.0
conda activate tf2 #激活tf2虚拟环境 pip install tensorflow==2.0.0-alpha0 #安装TensorFlow 2.0版
-
用工具进行代码版本升级
在TensorFlow 2.x版本中,提供了一个升级TensorFlow 1.x版本代码的工具——tf_upgrade_v2。该工具可以非常方便地将TensorFlow 1.x版本中编写的代码移植到TensorFlow 2.x中。
tf_upgrade_v2 --infile "1.x代码文档" -outfile "2.x代码文档"
tf_upgrade_v2工具支持单文档转换和多文档批量转换两种方式。
-
单个代码升级
tf_upgrade_v2 --infile foo_v1.py --outfile foo_v2.py
-
批量代码升级
tf_upgrade_v2 -intree foo_v1 -outtree foo_v2
这里的
foo_v1
指的是1.x代码文档目录,foo_v2
指的是升级后的2.x代码文档存放目录。需要注意的是tf_upgrade_v2工具并不是万能的,它只能实现基本的API升级。一般在转化完成之后还需要手动二次修改。
-
-
2.x版本对于TF-Hub、T2T等库的影响
没有影响。这两个库同时支持1.x以及2.x。
原文链接 大专栏 https://www.dazhuanlan.com/2019/08/17/5d576c490a0cc/