畳み込みの可視化
畳み込み層のアクティベーションを観察するのはとても面白い作業です。ぜひ一度はやってみましょう!
そのために、Keras の Model オブジェクトを使って新しいモデルを構築します。これは入力のリストと出力のリストを受け取ります。ここでは、入力画像として MNIST の数字を与えたときの、最初の畳み込み層の出力を新しいモデルの出力にします。
前の演習で作成した畳み込み model は、すでに学習済みです。MNIST の手書き数字を正しく分類できます。コンソールで model.summary() を実行して確認できます。
それでは、このモデルの最初の畳み込み層で学習された畳み込みマスクを見てみましょう!
この演習はコースの一部です
Kerasで学ぶIntroduction to Deep Learning
演習の手順
- モデル内の最初の畳み込み層の出力への参照を取得します。
- モデルの最初のレイヤーの入力と、
first_layer_outputを出力として用いて新しいモデルを構築します。 - この
first_layer_modelを使ってX_testに対して予測します。 - 15番目 と 18番目 のニューロンフィルタについて、
X_testの最初の数字のアクティベーションをプロットします。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# 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()