将TensorFlow 1.x升级代码到TensorFlow 2.x版本的方法汇总

下面将升级代码到TensorFlow 2.x版本的方法汇总起来,有如下几点。

1.最快速转化的方法

在代码中没有使用contrib模块的情况下,可以在代码最前端加上如下两句,直接可以实现的代码升级。

import tensorflow.compat.v1 as 
tftf.disable_v2_behavior()

这种方法只是保证代码在TensorFlow 2.x版本上能够运行,并不能发挥TensorFlow的最大性能。

2.使用工具进行转化的方法

在代码中没有使用contrib模块的情况下,用tf_upgrade_v2工具可以快速实现代码升级。当然tf_upgrade_v2工具并不是万能的,它只能实现基本的API升级。一般在转化完成之后还需要手动二次修改。

3.将静态图改成动态图的方法

静态图可以看作程序的运行框架,可以将输入输出部分原样的套用在函数的调用框架中。具体步骤如下:

(1)将会话(session)转化成函数。

(2)将注入机制中的占位符(tf.placeholder)和字典(feed_dict)转化成函数的输入参数。

(3)将会话运行(session.run)后的结果转化成函数的返回值。

在实现过程中,可以通过自动图功能,用简单的函数逻辑替换静态图的运算结构。自

4.将共享变量的作用于转成Python对象的命名空间

在定义权重参数时,用tf.Variable函数替换tf.get_variable函数。每个变量的命名空间(variable_scope)用类对象空间进行替换,即将网络封装成类的形式来搭建模型。

在封装类的过程中,可以继承tf.keras接口(如:tf.keras.layers.Layer、tf.keras.Model)也可以继承更底层的接口(如tf.Module、tf.layers.Layer)。

在对模型进行参数更新时,可以使用实例化类对象的variables和trainable_variables属性来控制参数。

5.升级TF-slim接口开发的程序

TensorFlow 2.x版本将彻底抛弃TF-slim接口,所以升级TF-slim接口程序会有较大的工作量。官方网站给出的指导建议是:如果手动将TF-slim接口程序转化为tf.layers接口实现,则可以满足基本使用;如果想与TensorFlow 2.x版本结合得更加紧密,则可以再将其转化为tf.keras接口。

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值