9 月 13 日,2025 Inclusion・外滩大会「开源嘉年华」正在限量报名中! 了解详情
写点什么

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

发布了 818 篇内容, 共 606.4 次阅读, 收获喜欢 2821 次。

关注

评论

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

软件开发人员必须阅读的20本书

越长大越悲伤

架构 微服务 软件开发

语音社交源码知识语音房间功能的实现

山东布谷科技

源码 软件开发 源码搭建 语音社交软件 语音厅平台搭建

大牛一次带你彻底搞懂Spring核心容器的动态代理机制与SpringAOP

互联网架构师小马

Easysearch 跨版本兼容性测试,还原 Elasticsearch 各版本快照数据

极限实验室

搜索引擎 elasticsearch INFINI Labs easysearch 快照恢复

深入理解Spring核心容器面向切面概念和实践:AOP实战经验

互联网架构师小马

【Netty】「萌新入门」(六)ByteBuf 的基本使用

sidiot

Java 后端 Netty 6 月 优质更文活动

理论实战源码齐飞!架构师社区疯传的SpringSecurity进阶小册真香

程序员小毕

Java 程序员 架构师 springboot springsecurity

STM32配合W5500网卡连接MQTT服务器

DS小龙哥

6 月 优质更文活动

关于未来LLM AI应用的思考,以及从0到1实现LLM资料分析。

码文

ChatGPT LLM 企业级应用思考

3年经验程序员终于把Spring核心容器的面向切面与Spring AOP搞懂了

互联网架构师小马

革新DeFi:Hover赋能Cosmosphere的金融自由

股市老人

PoseiSwap 即将在 6 月 18 日开启 IDO,白名单申请者超 14000 人

鳄鱼视界

难得可贵的Spring依赖注入实战经验,是程序员就该吸收一下!

互联网架构师小马

Java spring

Spring核心容器:AOP代理机制对性能的影响案例分析

互联网架构师小马

PoseiSwap IDO 即将开启,一览 $POSE 经济模型

BlockChain先知

C语言编程语法—结构

芯动大师

C语言 语法 6 月 优质更文活动

PoseiSwap 即将在 6 月 18 日开启 IDO,白名单申请者超 14000 人

西柚子

Nestjs+Vue实现阿里云OSS服务端签名直传

昆吾kw

Vue OSS 文件上传 nest

一次性搞懂springweb服务构建轻量级Web技术体系:Spring WebMVC

互联网架构师小马

横看Dubbo-微服务治理之流量防护

M

原创 微服务 dubbo sentinel

【Netty】「萌新入门」(七)ByteBuf 的性能优化

sidiot

Java 后端 Netty 6 月 优质更文活动

平凯星辰重磅支持 2023 开放原子全球开源峰会,开源数据库分论坛成功召开

PingCAP

数据库 开源 TiDB

Kubernetes Scheduler原理分析

穿过生命散发芬芳

k8s 6 月 优质更文活动

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