## 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)
問題: 相反,我可以得到一個直傳爲#1日完全連接層的輸出,即model.add(Dense(10, activation='relu'))
?Keras越來越intermidate層
我通過keras的例子FAQ。但我感到困惑: 在此:
get_3rd_layer_output = K.function([model.layers[0].input, K.learning_phase()], [model.layers[3].output])
我在哪裏傳遞輸入數據? model.layers [0] .input是什麼意思?訓練有素的模型是否存儲輸入?
我不明白K.Learning_phase()在這裏的作用。從理論上講,在訓練中,我們設置一些給定概率的隱藏輸出爲0.並且在測試中我們採用期望。 1.如果我想獲得中間層的輸出,是不是總是在測試時間?說,我訓練了模型。現在,我想檢查一些火車樣本的中間輸出。在這種情況下,我會使用測試模式,對吧? –
你會使用測試模式,但我認爲他們已經給出了功能。如果你的訓練沒有按預期工作,那麼你會希望看到訓練階段的中間輸出是正確的? –