将TensorFlow 1.0代码转换为TensorFlow 2.0

2022-04-01 00:00:00 python tensorflow tensorflow2.0

问题描述

我有以下代码:

import tensorflow as tf
a = tf.constant(5)
b = tf.constant(2)
c = tf.constant(3)
d = tf.multiply(a,b)
e = tf.add(b,c)
f = tf.subtract(d,e)

with tf.Session() as sess: #changes should be made here since session is not supported in 2.0
    fetches = [a,b,c,d,e,f]
    outs = sess.run(fetches)
    print("outs={}".format(outs))

由于TensorFlow 2.0中不再支持";Session&Quot;,我如何修改它以使其使用TensorFlow 2.0语法?

我不希望使用Compat函数,因为我想学习新的TensorFlow 2.0会话替代语法。我阅读了文档https://www.tensorflow.org/guide/effective_tf2,但我很难理解文档中提到的使用函数。

如何修改上面的会话代码,以便在TensorFlow 2.0中获得相同的输出?


解决方案

由于默认情况下启用eager execution,因此任何操作都会立即计算。

启用急切执行改变了TensorFlow操作的行为方式-现在 它们会立即求值并将其值返回给Python。Tf.Tensor 对象引用具体的值,而不是节点的符号句柄 在计算图表中。因为没有计算图可以 在稍后的会话中构建和运行,可以使用以下命令轻松检查结果 Print()或调试器。

急切执行与NumPy配合得很好。接受NumPy操作 Tf.张量参数。Tf.Tensor.numpy方法返回对象的 数值为NumPy ndarray。

因此您可以对张量调用numpy()以获取其数值:

import tensorflow as tf
a = tf.constant(5)
b = tf.constant(2)
c = tf.constant(3)
d = tf.multiply(a,b)
e = tf.add(b,c)
f = tf.subtract(d,e)

print('outs =', [a.numpy(), b.numpy(), c.numpy(), d.numpy(),
      e.numpy(), f.numpy()])

相关文章