在不使用会话的情况下打印 TensorFlow 对象

Printing a TensorFlow object without using session

我在尝试打印 TensorFlow 对象时收到不同的错误。

import numpy as np
import tensorflow as tf

TensorFlow和numpy的版本分别是2.6和1.19.5

print("np version:", np.__version__)
print("tf version:" ,tf.version.VERSION)
print("eager is on? ", tf.executing_eagerly())

#np version: 1.19.5
#tf version: 2.6.0
#eager is on?  True

现在,让我创建一个小数组并将其变成一个 tf 对象。

arr= [0,1.2,-0.8]
arr = tf.constant(arr, dtype = tf.float32)

当我使用 tf.printtf.compat.v1.print(arr) 时,没有任何反应。当我调用 numpy 时,我收到一个错误。

tf.compat.v1.print(arr.numpy())

AttributeError: 'Tensor' object has no attribute 'numpy'

到目前为止唯一有效的是;

with tf.compat.v1.Session() as sess:  print(arr.eval()) 

#[ 0.   1.2 -0.8]

但是,我想使用 numpy,因为我的目标是在训练阶段打印网络的某些特征。例如,如果我想打印学习率,我调用 with tf.compat.v1.Session() as sess: print(model.optimizer.learning_rate.eval()) 。然而,它 returns 我又犯了一个错误。

 'ExponentialDecay' object has no attribute 'eval'

我以前可以使用 numpy 打印所有内容,但是,我更新了 TensorFlownumpy 包,现在面临如此多的不兼容问题。最糟糕的是我不记得我使用的是哪个版本。

我遵循了此 post 中解释的每个步骤 。它对我没有帮助。

下面的代码给出了一个输出 -

import numpy as np
import tensorflow as tf

print("np version:", np.__version__)
print("tf version:" ,tf.version.VERSION)
print("eager is on? ", tf.executing_eagerly())
tf.enable_eager_execution()

arr= [0,1.2,-0.8]
arr = tf.constant(arr, dtype = tf.float32)

tf.compat.v1.print(arr.numpy())

输出:array([ 0. , 1.2, -0.8], dtype=float32)

你添加了 tf.enable_eager_execution() 了吗?