写点什么

一行代码迁移 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:0011174
用户头像
蔡芳芳 InfoQ主编

发布了 804 篇内容, 共 578.6 次阅读, 收获喜欢 2801 次。

关注

评论

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

ACK Net Exporter 与 sysAK 出击:一次深水区的网络疑难问题排查经历

阿里巴巴云原生

阿里云 云原生 网络 容器w

局域网IP扫描软件:IP Scanner Pro 激活版

真大的脸盆

Mac Mac 软件 局域网管理 IP扫描工具

阿里架构组分布式架构技术使用心得:全在这一份文档里面了

三十而立

Java java面试

焱融 YRCloudFile 在海量小文件场景训练加速优化策略

焱融科技

文件存储 容器存储 分布式文件存储 高性能存储 全闪存储

RADIUS认证是什么意思?有什么用?

行云管家

radius 认证

Java8 Stream中如何对集合数据进行快速匹配和赋值

Java你猿哥

Java ssm java8 Java工程师

大数据上云存算分离演进思考与实践

阿里技术

大数据 存算分离

49天含泪苦学这些分布式技术文档,一不小心,吊打了字节跳动面试官

三十而立

Java 分布式 java面试

ShareSDK常见问题

MobTech袤博科技

瓴羊Quick BI的存在,让企业管理不再复杂繁琐

对不起该用户已成仙‖

你还在为分布式系统数据一致性而烦恼吗,来来来!!!

Java你猿哥

Java 分布式 ssm 分布式架构

【新资讯】行云管家大动作-V7.0即将闪亮登场!

行云管家

网络安全 行云管家

进阶面试皆宜!阿里强推Java程序员进阶笔记,差距不止一点点

Java你猿哥

Java 面试 面经 八股文 Java八股文

程序员必修课:阿里性能优化全解终开源!设计+代码+JVM三飞

Java你猿哥

Java 性能优化 JVM 面经 jvm优化

不同于Oracle:MySQL的insert会阻塞update

GreatSQL

MySQL oracle greatsql greatsql社区

Go 语言基础语法

Spring源码解析:自定义标签解析

Java你猿哥

Java spring Spring Boot ssm

面试造飞机?GitHub顶级“java面试手册2023”(面试通过率95%)

Java你猿哥

Java 面试 面经 Java工程师 春招

精准水位在流批一体数据仓库的探索和实践

百度Geek说

大数据 数据仓库 实时计算 流批一体 企业号 3 月 PK 榜

ChatGPT软件技术栈解密

NineData

数据库 GitHub 技术架构 openai ChatGPT

刷爆LeetCode!字节技术官亲码算法面试进阶神技太香了

Java你猿哥

Java 数据结构 算法 面经 左程云

合约一键跟单带单软件开发交易平台定制(源码搭建)

开发v-hkkf5566

解决90%面试问题!GitHub顶级"Java面试手册"了解下八股文天花板

Java你猿哥

Java 面经 校招 Java工程师 春招

CoordConv:给你的卷积加上坐标

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 3 月 PK 榜

公司刚来的阿里p8,看完我构建的分布式框架,甩给我一份文档

三十而立

Java 分布式 java面试

屡获殊荣丨Dubbo 开源 12 周年年度总结与规划

阿里巴巴云原生

阿里云 开源 云原生 dubbo

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