tf_upgrade_v2 脚本自动重写 TF 1.x 和 compat.v1 API 符号
有时候我们在复现github上有关tensorflow框架的源码时常常会碰到这样的问题:
或者是这样式儿的:
这些Pycharm自动用浅色小方框标注起来的方法是指:在本机中安装的tensorflow的版本相对于这些代码太高了,这些方法要么已经改名、要么已经删掉了,这个时候如果我们在项目文件夹中一个一个找这些需要手动更改的代码会导致浪费时间已经不能完全修改干净。
按照官方的话来说,使用脚本的好处在于:
TensorFlow 2.x 包含 TF 1.x 和 tf.compat.v1 API 的许多 API 更改,例如重新排序了参数,重命名了符号,更改了参数的默认值。手动执行所有这些修改可能很乏味,而且很容易出错。为了简化更改,尽可能让您无缝过渡到 TF 2.x,TensorFlow 团队创建了 tf_upgrade_v2 效用函数,帮助您将旧版代码转换至新的 API。
废话不多说,直接演示怎么操作:
步骤一:确保已安装Tensorflow 2.x
import tensorflow as tf
print(tf.__version__)
注:上边红色的信息不用管,没什么影响。
步骤二:克隆 tensorflow/modelss git 仓库
在cmd上直接运行该命令即可:
git clone --branch r1.13.0 --depth 1 https://github.com/tensorflow/models
这里是在克隆 tensorflow/modelss git 仓库,以便获得要测试的一些代码。
这个下载的还是很快的,大概几分钟。
步骤三:使用tf_upgrade_v2脚本更新.py文件
我们在安装tensorflow时应该已安装该脚本,所以可以直接使用tf_upgrade_v2
命令。
查看内置帮助命令:tf_upgrade_v2 -h
更新代码时,我想说的是,比较推荐使用该脚本对单个 Python 文件运行,因为如果是对整个文件夹进行操作的话,要知道项目文件夹包含的不只有.py文件,如果含有其他文本类似于.txt,.md文件之类的,那么对于整个文件夹的更新就会终止报错,像这样:
所以最好是能对单个Python文件运行,虽然慢了点但是方便查看日志文件以及关注到运行的状态。
现在我想把该文件目录下的vgg16.py文件更新:
并且更新后的py文件还放在这个目录下。
在cmd上输入:tf_grade_v2 --infile '原路径' --outfile '目标路径'
我这里是:tf_upgrade_v2 --infile E:/pythonProject/ctpn-crnn-master/cptn/data/vgg16.py --outfile E:/pythonProject/ctpn-crnn-master/cptn/data/vgg16_n.py
相当是把vgg16.py更新后的文件vgg16_n.py放在了同级目录下,这样的话只需要在更新后把它俩rename一下、互相换个名字就不会影响它在整个项目文件中的作用。
Tensorflow官方链接:link