美文网首页
python中tf1代码到tf2代码的转换

python中tf1代码到tf2代码的转换

作者: 扎哈_ | 来源:发表于2021-12-04 16:18 被阅读0次

原因:

目前在学习阶段,看到网上的资料使用的是tf1的代码,我使用的是tf2的,所以需要直接将tf1转换为tf2代码以适应tf2的开发方式

遇到的情景:

1. 使用Session 的情景:
y = tf.constant(3, name='y_hat'); y_hat = tf.constant(5, name='y')
init = tf.global_variables_initializer()
loss = tf.Variable((y - y_hat)**2, name='loss')
with tf.Session() as session: 
    session.run(init)   
    print(session.run(loss))

在tf2中,默认开启了Eager Execution环境,不需要定义图,也不需要使用Session,直接运行,就可以得到结果。

Eager Execution 是用于研究和实验的灵活机器学习平台,具备以下特性:
  • 直观的界面 - 自然地组织代码结构并使用 Python 数据结构。快速迭代小模型和小数据。
  • 更方便的调试功能 - 直接调用运算以检查正在运行的模型并测试更改。使用标准 Python 调试工具立即报告错误。
  • 自然的控制流 - 使用 Python 而非计算图控制流,简化了动态模型的规范。
    Eager Execution 支持大部分 TensorFlow 运算和 GPU 加速。

转换后

y_hat = tf.constant(3, name='y_hat');y = tf.constant(5, name='y')
loss = (y_hat - y)**2
print(loss)
2. placeholder
a = tf.placeholder(tf.float32, name="a")
sigmoid = tf.sigmoid(a)

在tf1中,这是为将来需要计算的数据预留位置的。在session中执行sigmoid时将数据传入
tf2中直接计算即可:

print(tf.sigmoid(a)) # a需要是 bfloat16, half, float, double, complex64, complex128 格式的
3. tf.contrib.layers.xavier_initializer

此函数用于生成层中梯度值接近的随机数
在tf2中,可以使用tf.initializers.GlorotUniform替代,例如:

gu = tf.initializers.GlorotUniform()
W1 = tf.Variable(name='W1', initial_value=gu(shape=[25, 12288]))
4. reset_default_graph

reset_default_graph不适用于 Eager Execution 或 tf.function,并且您不应直接调用它。要将使用 Graph 相关函数的代码迁移到 TF2,请在没有它们的情况下重写代码。有关Tensorflow 1 和 Tensorflow 2 之间的行为和语义变化的更多描述,请参阅 迁移指南

在tf1中,reset_default_graph实际效果可以参考【TensorFlow】tf.reset_default_graph()函数-duanlianvip
在tf2中不存在这个问题

5. tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)

tf1中如下(这些代码将在一个session中运行):

optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)

使用tf2(直接运行):

with tf.GradientTape() as tape:
    optimizer = tf.keras.optimizers.Adam(learning_rate=learning_rate)
    _ = optimizer.minimize(cost, var_list=parameters, tape=tape)

相关文章

  • python中tf1代码到tf2代码的转换

    原因: 目前在学习阶段,看到网上的资料使用的是tf1的代码,我使用的是tf2的,所以需要直接将tf1转换为tf2代...

  • Python+Tensorflow使用过程中的一些问题

    tf1和tf2之间的改动比较大,常会出现某个attribute不存在这样的问题,一般是因为安装了tf2但是用了tf...

  • Tensorflow 1:Hello World

    基于TF1 Hello World 在jupyter notebook中输入一下代码: 输出: 基本流程 一个完成...

  • Python黑魔法大全

    说明:本文描述的所有“黑魔法”都以Python3做示例代码,Python2示例代码请自行转换。本文不探讨Pytho...

  • python2代码转python3格式

    看到一个博客:使用python内置2to3工具将python2代码转换为python3代码[https://www...

  • 《Python从小白到大牛》第10章 函数式编程

    《Python从小白到大牛》已经上市! 程序中反复执行的代码可以封装到一个代码块中,这个代码块模仿了数学中的函数,...

  • pycharm 添加2to3 autopep8

    2to3可以很方便的将python2的代码转换为3的代码,是python自带的一个功能,而pep8是python编...

  • webpack4.0 基础

    前端构建工具对比 作用: 把源代码转换成发布到线上的可执行 JS CSS HTML 代码; 代码转换、文件优化、代...

  • 【阿里-TF1版本:1-基础】

    TF基础操作代码-优先观看 1.1 TF1的构造图和运行图 tf1版本里图的构造和执行是分离的,一旦构造好之后,是...

  • Tensorflow 3:线性回归

    基于TF1 我们对y = 8x+3做线性回归预测 详细代码 输出结果 有结果可以看出,在迭代到1300次的时候,趋...

网友评论

      本文标题:python中tf1代码到tf2代码的转换

      本文链接:https://www.haomeiwen.com/subject/ugnvxrtx.html