查看原文
其他

将您的代码升级至 TensorFlow 2.0

Google TensorFlow 2021-07-27

TensorFlow 2.0 将包含许多 API 变更,例如,对参数进行重新排序、重新命名符号和更改参数的默认值。手动执行所有这些变更不仅枯燥乏味,而且容易出错。为简化变更过程并让您尽可能顺畅地过渡到 TensorFlow 2.0,TensorFlow 工程团队创建了实用程序 tf_upgrade_v2,可帮助您将旧代码转换至新 API。

注:tf_upgrade_v2 链接

https://github.com/tensorflow/docs/blob/master/site/en/r2/guide/upgrade.md


使用 pip 安装  TensorFlow 2.0 时,系统会自动添加 tf_upgrade_v2 实用程序。该程序可将现有的 TensorFlow 1.13 Python 脚本转换为 TensorFlow 2.0,以帮助加快您的升级过程。


我们已尝试自动化处理尽可能多的升级任务,但脚本仍无法处理一些句法和风格方面的变更。


某些 API 符号可能无法仅使用字符串替代方案简单升级。为确保 TensorFlow 2.0 仍支持您的代码,升级脚本加入了 compat.v1 模块。此模块将以等效的 tf.compat.v1.foo 引用代替表单 tf.foo 的调用。不过,建议您手动检查此类替代方案,并尽快将其迁移至 tf.* 命名空间(代替 tf.compat.v1.* 命名空间)中的新 API。


此外,由于我们弃用了某些模块(例如 tf.flags 和 tf.contrib),您将无法通过切换至 compat.v1 来实现 TensorFlow 2.0 中的某些变更。升级使用这些模块的代码可能需要额外使用一个库(如 absl.flags)或切换至 tensorflow/addons 中的软件包。

注:tensorflow/addons 链接

https://github.com/tensorflow/addons


如果您想尝试将模型从 TensorFlow 1.12 升级至 TensorFlow 2.0,请按照下方说明执行操作:


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

注意:使用 pip 安装 TensorFlow 1.13 及以上版本(包括 nightly 2.0 构建版)时,系统会自动安装 tf_upgrade_v2。


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

tf_upgrade_v2 --infile foo.py --outfile foo-upgraded.py


您也可以在目录树上运行升级脚本:

# 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


此脚本还会列出详细的变更,例如参数重命名:



添加关键字:



以及推荐进行的任何手动检查情况:



所有这些信息将导出至主目录的 report.txt 文件中。在 tf_upgrade_v2 运行升级后的脚本并将其导出后,您便可运行模型并进行检查,以确保您的输出与 TensorFlow 1.13 类似:



注意:

  • 在运行此脚本前,请勿手动升级部分代码。特别要注意的是,在对函数中的 tf.argmax 或 tf.batch_to_space 等参数进行重新排序后,脚本会错误地添加关键字参数并导致现有的代码发生错误映射

  • 此脚本不会对参数进行重新排序。相反,此脚本会将关键字参数添加至对自身参数进行重新排序的函数中


如要报告升级脚本错误或发出功能请求,请在 GitHub 上提交问题。如果您正在测试 TensorFlow 2.0,请提供您的反馈!您可以随时加入 TensorFlow 2.0 测试社区,并将疑问和讨论发送至 testing@tensorflow.org 

注:TensorFlow 2.0 测试社区 链接

https://groups.google.com/a/tensorflow.org/forum/?utm_medium=email&utm_source=footer



更多 AI 相关阅读:



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存