我是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)
答案 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变量中。