一行代码迁移TensorFlow 1.x到TensorFlow 2.0


【导读】TensorFlow 2.0将会包含许多API改变,例如改变参数顺序、重命名、修改默认值等。人工进行代码迁移比较繁琐,还有出错的风险。为了能让你的老代码和TensorFlow 2.0进行无缝迁移,TensorFlow开发组创建了tf_upgrade_v2功能。


当你用pip你装TensorFlow 2.0是,tf_upgrade_v2就已经被自动安装了,它可以加速你将已有的TensorFlow 1.13脚本迁移到TensorFlow 2.0。


仍有一些句法和风格改变是tf_upgrade_v2无法自动迁移的,这些变更无法用简单的字符串替换来实现。为了确保你的代码可以被TensorFlow 2.0支持,升级脚本包含了一个compat.v1模块。这个模块会将tf.foo形式的调用天环卫tf.compat.v1.foo。推荐的做法是尽快人工校对这些替换,并将它们迁移到tf.*命名空间下的新API而不是使用tf.compat.v1.*命名空间。


 另外,由于一些模块的废弃(例如tf.flags和tf.contrib),TensorFlow 2.0会包含一些无法通过切换到compat.v1来解决的变更。升级这些代码需要用到额外的库(如absl.flags)或者切换到tensorflow/addons包下的代码。


如果你想要将你的模型从1.12迁移到TensorFlow 2.0,首先安装tf-nightly-2.0-preview或tf-nightly-gpu-2.0-preview。


可以直接升级一个单独的Python脚本:

The upgrade script can be run on a single Python file:

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中。更新完成后,你可以运行模型来检查你的输出是否和1.13时的输出相似。


警告:

  • 在运行较本期按,不要手动升级代码。尤其是参数顺序变更的方法,例如tf.argmax或者tf.batch_to_space,这回导致脚本错误地添加关键词参数。

  • 脚本并不会重排序参数,而是添加关键词参数。


参考链接:

  • https://medium.com/tensorflow/upgrading-your-code-to-tensorflow-2-0-f72c3a4d83b5


-END-

专 · 知

专知《深度学习:算法到实战》课程全部完成!480+位同学在学习,现在报名,限时优惠!网易云课堂人工智能畅销榜首位!

欢迎微信扫一扫加入专知人工智能知识星球群,获取最新AI专业干货知识教程视频资料和与专家交流咨询!

请加专知小助手微信(扫一扫如下二维码添加),加入专知人工智能主题群,咨询《深度学习:算法到实战》课程,咨询技术商务合作~

请PC登录www.zhuanzhi.ai或者点击阅读原文,注册登录专知,获取更多AI知识资料!

点击“阅读原文”,了解报名专知《深度学习:算法到实战》课程

展开全文
Top
微信扫码咨询专知VIP会员