如何从每一层Keras获取数组中的输出值

时间:2019-05-15 07:32:15

标签: python keras

我是python和Keras的初学者。我正在将Keras与tensorflow后端一起使用。我想从Keras的每一层(隐藏层和输出层)获取数组中的值。我该怎么办?

这是我的顺序模型

def baseline_model():
# create model
model = Sequential()
model.add(Conv2D(32, (5, 5), input_shape=(1, 28, 28), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.2))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(num_classes, activation=tempsigmoid))
# Compile model
model.compile(loss='mse', optimizer='adam', metrics=['accuracy'])
return model

# build the model
model = baseline_model()

我尝试使用此代码

hidden_layer = model.layers[4].output
print(hidden_layer)

但结果为张量

Tensor("dense_1/Relu:0", shape=(?, 128), dtype=float32)

2 个答案:

答案 0 :(得分:1)

要提取神经网络的第i层,可以使用Keras函数。 假设您正在对Model的某些数据进行训练df

from tensorflow.keras import backend as K

# create a Keras function to get i-th layer
get_layer_output = K.function(inputs = Model.layers[0].input, outputs = Model.layers[i].output)

# extract output
layer_output = get_layer_output(df)

您可以找到一个实用的应用程序here。希望这会有所帮助,否则请通知我。

答案 1 :(得分:0)

您可以做同样的事情,但是用这种方式保存数据:

hidden_layer = model.layers[4].output
hidden_layer = hidden_layer.eval(session=tf.Session())
print(hidden_layer)

这将直接将Tensor数据保存在hidden_​​layer变量中。