使用升级脚本进行转换

使用升级脚本进行转换

TensorFlow
2.0包含许多API更改,比如重新排序参数、重命名符号和更改参数的默认值。手工执行所有这些修改将是乏味的,并且容易出错。为了简化更改,并尽可能无缝地过渡到TF 2.0, TensorFlow团队创建了tf_upgrade_v2实用程序来帮助将遗留代码转换到新的API。

使用TF 2.0的pip安装自动包含tf_upgrade_v2实用程序。 它将通过将现有的TensorFlow 1.x Python脚本转换为TensorFlow 2.0来加速升级过程。

转换脚本尽可能自动化,但仍然存在脚本无法执行的语法和风格更改。

兼容模块

仅使用字符串替换无法升级某些API符号。 为确保TensorFlow2.0仍支持您的代码,升级脚本包含compat.v1模块。
该模块使用等效的tf.compat.v1.foo引用替换TF 1.x符号,如tf.foo。
虽然兼容性模块很好,但我们建议您手动校对替换并将它们尽快迁移到tf.*命名空间中的新API而不是tf.compat.v1.*命名空间。

由于TensorFlow2.x模块已弃用(例如,tf.flags和tf.contrib),因此切换到compat.v1无法解决某些更改。
升级此代码可能需要使用其他库(例如,absl.flags)或切换到tensorflow/addons中的包。

升级脚本

要将代码从TensorFlow 1.x转换为TensorFlow 2.x,请按照以下说明操作:

从pip包运行脚本

首先通过pip安装tensorflow和tensorflow-gpu包:

pip install tensorflow==2.0.0-alpha0

pip install tensorflow-gpu==2.0.0-alpha0

升级脚本可以在单个Python文件上运行:

tf_upgrade_v2 --infile tensorfoo.py --outfile tensorfoo-upgraded.py

如果找不到代码修复程序,脚本将打印错误。 您也可以在目录树上运行它:

# upgrade the .py files and copy all the other files to the outtree tf_upgrade_v2 --intree coolcode --outtree coolcode-upgraded # just upgrade the .py files tf_upgrade_v2 --intree coolcode --outtree coolcode-upgraded --copyotherfiles False

详细报告

该脚本还会报告详细更改列表,例如:

'tensorflow/tools/compatibility/testdata/test_file_v1_12.py' Line 65 -------------------------------------------------------------------------------- Added keyword 'input' to reordered function 'tf.argmax' Renamed keyword argument from 'dimension' to 'axis' Old: tf.argmax([[1, 3, 2]], dimension=0)) ~~~~~~~~~~ New: tf.argmax(input=[[1, 3, 2]], axis=0))

所有这些信息都包含在将导出到当前目录的report.txt文件中。
一旦tf_upgrade_v2运行并导出了升级后的脚本,您就可以运行模型并检查以确保输出类似于TF1.x。

注意事项

  • 在运行此脚本之前,请勿手动更新部分代码。
    特别是,已重新排序参数(如tf.argmax或tf.batch_to_space)的函数会导致脚本错误地添加错误映射现有代码的关键字参数。

  • 此脚本不会重新排序参数。
    相反,该脚本将关键字参数添加到重新排序参数的函数中。

要报告升级脚本错误或发出功能请求,请在GitHub上提交问题。
如果您正在测试TensorFlow 2.0,我们希望了解它! 加入TF2.0测试社区,并将问题和讨论发送到[email protected]

你可能感兴趣的:(使用升级脚本进行转换)