写点什么

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

  • 2019-03-01
  • 本文字数:1021 字

    阅读完需:约 3 分钟

一行代码迁移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 包下。


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


然后就可以通过运行一个单独的 Python 脚本直接升级:


tf_upgrade_v2 — infile foo.py — outfile foo-upgraded.py
复制代码



注意:通过 pip install 安装 TensorFlow 1.13 及后续版本时会自动安装 tf_upgrade_v2。


也可以在文件夹目录中执行升级脚本:


# upgrade the .py files and copy all the other files to the outtreetf_upgrade_v2 — intree foo/ — outtree foo-upgraded/# just upgrade the .py filestf_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


更多内容,请关注 AI 前线



2019-03-01 13:0011448
用户头像
蔡芳芳 InfoQ 总编辑

发布了 819 篇内容, 共 616.8 次阅读, 收获喜欢 2822 次。

关注

评论

发布
暂无评论
发现更多内容

测开之函数进阶· 第8篇《多个装饰器装饰同一个函数,三个内置的装饰器》

清菡软件测试

测试开发

Filebeat同步写位点文件引发的磁盘IO问题

秦宝齐

28天写作挑战——坚持28天,每天500字

TGO鲲鹏会

28天写作 热门活动

零基础也能看得懂!Android面试心得必备技能储备详解,Android面试题及解析

欢喜学安卓

android 程序员 面试 移动开发

算法学习手册

田维常

算法

使用PG_SHOW_PLANS监控PostgreSQL执行计划

PostgreSQLChina

数据库 postgresql 开源

云算力挖矿系统APP开发|云算力挖矿软件开发

系统开发

大数据指标分析思考

Andy

吴桐/数字化的下一个十年,你可能不会更幸福

CECBC

数字化时代

HTTP 请求流程

coolion

大前端 浏览器 HTTP

Java多线程并发控制工具CountDownLatch,实现原理及案例

李尚智

Java 并发编程 后端

架构师第7周作业

Geek_xq

自学编程的4大误区,你中招了吗?

田维常

程序员

看完老板哭着让我留下来!带你彻底搞懂Android启动速度优化!Android篇

欢喜学安卓

android 程序员 面试 移动开发

大数据应用及其价值

Andy

再见 2020!Apache RocketMQ 发布 4.8.0,DLedger 模式全面提升!

阿里巴巴云原生

阿里云 开发者 云原生 存储 消息中间件

加密数字货币钱包系统软件开发|加密数字货币钱包APP开发

系统开发

惊艳!阿里人用29篇讲明白了多线程与高并发+设计模式,惊呆了!

996小迁

Java 面试 设计模式 多线程 高并发

VoltDB成功入选CNCF Landscape云原生数据库全景图

VoltDB

云原生 cncf VoltDB 分布式内存数据库

换个角度,聊聊全链路压测

老张

性能测试 系统稳定性 全链路压测

MySQL不会丢失数据的秘密,就藏在它的 7种日志里

程序员小富

MySQL

深入分析单例设计模式

Andy

如何在 OpenShift 中运行 Collabora Office

东风微鸣

openshift

python 技术面试没过,居然是没有用 pytest 测试框架

和牛

Python 测试 测试框架 pytest

软件测试---BUG的生命周期

测试人生路

软件测试

AMD台式CPU市场份额距离英特尔还有多远?刚到四分之一

E科讯

Uniswap去中心化交易所系统开发

W13902449729

去中心化交易所系统开发 uniswap

泪目!美团点评APP在移动网络性能优化的实践,附赠课程+题库

欢喜学安卓

android 程序员 面试 移动开发

年底了,你的数据库密码安全吗

Simon

MySQL 数据库

Java多线程并发控制工具信号量Semaphore,实现原理及案例

李尚智

Java Java并发 并发编程 后端

腾讯高工亲授“MySQL学习方法”【思维导图+学习笔记+实战文档+面试题库】让你站在数据库领域的顶峰 笑傲江湖!

比伯

Java 编程 架构 面试 计算机

一行代码迁移TensorFlow 1.x到TensorFlow 2.0_AI&大模型_TensorFlow团队_InfoQ精选文章