Python 如何获取张量对象的值
我有下面的张量对象,它是a=model.layers[3]的outpur。输出此代码Python 如何获取张量对象的值,python,tensorflow,keras,Python,Tensorflow,Keras,我有下面的张量对象,它是a=model.layers[3]的outpur。输出此代码 a = <tf.Tensor 'dense_20/Softmax:0' shape=(None, 3) dtype=float32> 我也尝试了evala方法,得到了同样的上述错误 使用a.eval时,出现以下错误: AttributeError: 'Tensor' object has no attribute 'numpy' ValueError: Cannot evaluate tenso
a = <tf.Tensor 'dense_20/Softmax:0' shape=(None, 3) dtype=float32>
我也尝试了evala方法,得到了同样的上述错误
使用a.eval时,出现以下错误:
AttributeError: 'Tensor' object has no attribute 'numpy'
ValueError: Cannot evaluate tensor using `eval()`: No default session is registered. Use `with sess.as_default()` or pass an explicit session to `eval(session=sess)`
RuntimeError: The Session graph is empty. Add operations to the graph before calling run().
我也尝试过以下方法:
with tf.compat.v1.Session() as sess:
a=model.layers[3].output
print(sess.run(a))
sess.close()
并获得以下错误:
AttributeError: 'Tensor' object has no attribute 'numpy'
ValueError: Cannot evaluate tensor using `eval()`: No default session is registered. Use `with sess.as_default()` or pass an explicit session to `eval(session=sess)`
RuntimeError: The Session graph is empty. Add operations to the graph before calling run().
我试过很多东西,但没有得到答案
我正在研究google colab,tensorflow=2.2.0,keras=2.3.1为了评估keras模型中任意层的输出,您需要确保其所有输入都可用。下面是一个示例代码,它使用一个虚拟模型来显示相同的内容。该代码应在TF1.x和TF2.x中工作。请注意,这里使用了Keras函数来摆脱处理tensorflow会话的锅炉板代码
import tensorflow as tf
print('TensorFlow: ', tf.__version__, end='\n\n')
input_layer = tf.keras.Input(shape=[100])
x = tf.keras.layers.Dense(16, activation='relu')(input_layer)
x = tf.keras.layers.Dense(64, activation='relu')(x)
x = tf.keras.layers.Dense(32, activation='relu')(x)
x = tf.keras.layers.Dense(10, activation='relu')(x)
output_layer = tf.keras.layers.Dense(5, activation='softmax')(x)
model = tf.keras.Model(inputs=[input_layer], outputs=[output_layer])
a = model.layers[3].output
print(a)
fn = tf.keras.backend.function(input_layer, a) # create a Keras Function
random_input = tf.random.normal([1, 100]) # random noise
a_eval = fn(random_input)
print('\nLayer Output:\n', a_eval)
输出:
TensorFlow: 2.3.0-dev20200611
Tensor("dense_73/Identity:0", shape=(None, 32), dtype=float32)
Layer Output:
[[0. 0. 0.46475422 0.0961322 0. 0.
0.23016977 0. 0. 0.05861767 0.03298267 0.11953808
0. 0. 0.97043467 0. 0. 0.6384926
0. 0. 0. 0.2346505 0.1822727 0.0145395
0.08411474 0. 0. 0.37601566 0. 0.
0.29435986 0.44069782]]
您需要提供更多的上下文,比如一个我们可以看到错误的最小示例。根据您是处于图形模式还是渴望模式,您可以做不同的事情,这取决于您尝试从何处获取值。也许可以帮助你。请提供一个简单的例子来重现你的问题。