【问题标题】:Get values of KerasTensor获取 KerasTensor 的值
【发布时间】:2021-06-26 22:26:27
【问题描述】:

有没有办法将 Keras 张量的值作为 numpy 数组获取? 正常的K.eval() 不起作用并导致:

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

我使用急切执行。 我需要它来访问和检查我的顺序模型的某些层的输出。示例:(out2 = K.eval(cnn.layers[2].output))

小例子:

import numpy
import tensorflow.keras.models as models
import tensorflow.keras.layers as layers
from keras import backend as K

cnn = models.Sequential([
    layers.Conv2D(filters=64, kernel_size=3, activation='relu',
                  kernel_initializer='he_uniform', padding='same',
                  input_shape=(32,32,3))],
    name='cnn')

res = cnn(numpy.random.random((1,32,32,3)))

print(K.eval(cnn.layers[0].output))

【问题讨论】:

  • 您需要包含代码,因为没有上下文的张量实际上是不可评估的。
  • Tensorflow v1 还是 v2?
  • Tensorflow v2.5
  • 你这里有一个 XY 问题,询问你认为解决问题的方法是什么,而不是询问实际问题。

标签: python tensorflow keras deep-learning


【解决方案1】:

不要kerastensorflow.keras混用,即

from keras import backend as K 
#wrong, do not import anything from keras and mix them with tensorflow

从模型中获取中间输出:

#for example, to get the intermediate outputs from model.layers[2]
temp_model=tf.keras.Model(model.input,model.layers[2].output)
print(temp_model(np.random.rand(1,32,32,3)).numpy())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 2021-09-22
    • 2021-05-09
    • 1970-01-01
    • 2021-07-30
    • 2021-11-19
    • 2021-03-30
    相关资源
    最近更新 更多