Faltungen betrachten
Die Aktivierungen einer Convolutional-Schicht zu inspizieren, ist ziemlich cool. Das solltest du mindestens einmal in deinem Leben gemacht haben!
Dafür baust du ein neues Modell mit dem Keras-Objekt Model, das eine Liste von Eingaben und eine Liste von Ausgaben erhält. Die Ausgaben, die du diesem neuen Modell gibst, sind die Ausgaben der ersten Convolutional-Schicht, wenn eine MNIST-Ziffer als Eingabebild verwendet wird.
Das Convolutional-model, das du in der vorherigen Übung gebaut hast, wurde bereits für dich trainiert. Es kann MNIST-Handschriften korrekt klassifizieren. Du kannst das in der Konsole mit model.summary() prüfen.
Schauen wir uns die Faltungs-Masken an, die in der ersten Convolutional-Schicht dieses Modells gelernt wurden!
Diese Übung ist Teil des Kurses
<Kurs>Einstieg ins Deep Learning mit Keras</Kurs>Übungsanweisungen
- Hole dir eine Referenz auf die Ausgaben der ersten Convolutional-Schicht im Modell.
- Baue ein neues Modell, das die Eingabe der ersten Schicht des Modells als Input und
first_layer_outputals Ausgaben verwendet. - Verwende dieses
first_layer_model, um Vorhersagen aufX_testzu machen. - Plotte die Aktivierungen der ersten Ziffer aus
X_testfür den 15. und den 18. Neuronenfilter.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# Obtain a reference to the outputs of the first layer
first_layer_output = model.layers[____].output
# Build a model using the model's input and the first layer output
first_layer_model = Model(inputs = model.layers[0].input, outputs = ____)
# Use this model to predict on X_test
activations = ____.____(____)
# Plot the activations of first digit of X_test for the 15th filter
axs[0].matshow(activations[____,:,:,14], cmap = 'viridis')
# Do the same but for the 18th filter now
axs[1].matshow(activations[0,:,:,____], cmap = 'viridis')
plt.show()