## what my model looks like
# defining the model archictecture
model = Sequential()
# 1st conv layer
model.add(Conv2D(32, (5, 5), activation='relu', input_shape=x_ip_shape))
# 1st max pool
model.add(MaxPooling2D(pool_size=(2, 2)))
# 2nd conv layer
model.add(Conv2D(64, (7, 7), activation='relu'))
# 2nd max pool
model.add(MaxPooling2D(pool_size=(2, 2)))
# Flattenning the input
model.add(Flatten())
# 1st Fully connected layer
model.add(Dense(10, activation='relu'))
# Adding droput
model.add(Dropout(0.25))
# softmax layer
model.add(Dense(classes_out, activation='softmax'))
# defining loss, optimizer learning rate and metric
model.compile(loss='categorical_crossentropy',optimizer=keras.optimizers.Adam(1e-4), metrics=['accuracy'])
## prediction
scores = model.evaluate(test_x, test_labels, verbose=0)
问题:
相反,我可以获得第一个完全连接层的前向传递的输出,即model.add(Dense(10, activation='relu'))
?
我在 keras 上查看了示例FAQ https://keras.io/getting-started/faq/#how-can-i-obtain-the-output-of-an-intermediate-layer。但这让我很困惑:
在此:
get_3rd_layer_output = K.function([model.layers[0].input, K.learning_phase()], [model.layers[3].output])
我将输入数据传递到哪里? model.layers[0].input 是什么意思?训练好的模型是否存储输入?