Google Article
将您的代码升级到 TensorFlow 2.0
2019 年 2 月 27 日
作者:Paige Bailey 和 Anna Revinskaya

TensorFlow 2.0 将包含许多 API 更改,例如重新排序参数、重命名符号以及更改参数的默认值。手动执行所有这些修改将很繁琐且容易出错。为了简化更改,并使您尽可能无缝地过渡到 TF 2.0,TensorFlow 工程团队创建了一个 tf_upgrade_v2 实用程序,它将帮助您将旧代码过渡到新的 API。



tf_upgrade_v2 实用程序在使用 pip 安装 TF 2.0 时会自动包含,并将通过将现有的 TensorFlow 1.13 Python 脚本转换为 TensorFlow 2.0 来帮助加速您的升级过程。

我们已尽力使尽可能多的升级任务自动化:但是,仍然存在脚本无法执行的语法和样式更改。

某些 API 符号无法仅通过使用字符串替换来升级。为了确保您的代码在 TensorFlow 2.0 中仍然受支持,升级脚本包含一个 compat.v1 模块。此模块将用等效的 tf.compat.v1.foo 引用替换形式为 tf.foo 的调用。但是,建议尽快手动校对此类替换,并将它们迁移到 tf.* 命名空间中的新 API,而不是 tf.compat.v1.* 命名空间。

此外,由于模块已弃用(例如,tf.flagstf.contrib),TensorFlow 2.0 将包含无法通过切换到 compat.v1 来解决的更改。升级使用这些模块的代码可能需要使用其他库(例如 absl.flags)或切换到 tensorflow/addons 中的包。

如果您想尝试将模型从 TensorFlow 1.12 升级到 TensorFlow 2.0,请按照以下说明进行操作

首先,安装 tf-nightly-2.0-preview / tf-nightly-gpu-2.0-preview

注意:tf_upgrade_v2 通过 pip install 自动安装到 TensorFlow 1.13 及更高版本(包括 2.0 nightly 版本)。

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

tf_upgrade_v2 — infile foo.py — outfile foo-upgraded.py
TF Upgrade Script
您也可以在目录树上运行它

# upgrade the .py files and copy all the other files to the outtree
tf_upgrade_v2 — intree foo/ — outtree foo-upgraded/

# just upgrade the .py files
tf_upgrade_v2 — intree foo/ — outtree foo-upgraded/ — copyotherfiles 
False

该脚本还报告了详细更改列表:例如,参数重命名

The script also reports a list of detailed changes: for example, argument renames

添加关键字

adding keywords

以及任何推荐的手动检查

manual checks

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

Running script

注意事项

  • 在运行此脚本之前,不要手动更新代码的任何部分。特别是,参数已重新排序的函数(如 tf.argmaxtf.batch_to_space)会导致脚本错误地添加关键字参数,这些参数与您的现有代码不匹配。

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


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


下一篇文章
Upgrading your code to TensorFlow 2.0

作者:Paige Bailey 和 Anna Revinskaya

TensorFlow 2.0 将包含许多 API 更改,例如重新排序参数、重命名符号以及更改参数的默认值。手动执行所有这些修改将很繁琐且容易出错。为了简化更改,并使您尽可能无缝地过渡到 TF 2.0,TensorFlow 工程团队创建了…