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
![54badd86b9c395b713ea3d814607f986.gif](https://i-blog.csdnimg.cn/blog_migrate/9350387c9cbfa496888f83bd2bbfe81a.gif)
您也可以在目录树上运行升级脚本:
# 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
此脚本还会列出详细的变更,例如参数重命名:
![e5936fa1f30fa66852a2c2bb43126805.png](https://i-blog.csdnimg.cn/blog_migrate/bcd6efc5931ea691e3c79e6b819bcbe3.jpeg)
添加关键字:
![e4f2c8c741fed0d4e585598e1d70dda6.png](https://i-blog.csdnimg.cn/blog_migrate/947296bc4812bee64250feeafd7d4e8a.jpeg)
以及推荐进行的任何手动检查情况:
![2374964d722f1ba9af0dbc4fc9773e6b.png](https://i-blog.csdnimg.cn/blog_migrate/062ebb77bc167d7cf1b6c4a3ff84cad8.jpeg)
所有这些信息将导出至主目录的 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 相关阅读:
BodyPix 发布:在浏览器中使用 TensorFlow.js 进行实时人物分割
MIT 深度学习基础知识:TensorFlow 简介与概览
字词的向量表示法