## 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)
FRAGE: Stattdessen kann ich die Ausgabe für einen Vorwärtspass für # 1. Vollständig verbundene Schicht erhalten, das heißt model.add(Dense(10, activation='relu'))
?Keras bekommen Ausgabe von intermidate Schichten
Ich ging durch Beispiel auf keras FAQ. Aber es verwirrt mich: In dieser:
get_3rd_layer_output = K.function([model.layers[0].input, K.learning_phase()], [model.layers[3].output])
wo ich die Eingangsdaten übergeben? Was bedeutet model.layers [0] .input? Speichert das trainierte Model die Eingabe?
Ich verstehe die Rolle von K.learning_phase() hier nicht. In der Theorie setzen wir beim Training einige versteckte Ausgaben mit einer gegebenen Wahrscheinlichkeit auf 0. Und beim Testen nehmen wir Erwartungen an. 1. Wenn ich die Ausgabe einer Intermidate-Schicht bekommen möchte, ist es nicht immer zur Testzeit? 2. Sag, ich habe das Modell trainiert. Jetzt möchte ich die Intermidate-Ausgabe für einige Zugproben überprüfen. In diesem Fall würde ich den Testmodus verwenden, richtig? –
Sie würden den Testmodus verwenden, aber ich denke, dass sie die Funktionalität gegeben haben. Was, wenn dein Training nicht wie erwartet funktioniert, dann würdest du den Zwischenausgang in der Trainingsphase sehen wollen, oder? –