顯示剛剛的數字7圖片看看
test_image = np.reshape(x_test[0], [1, 1, 28, 28])
plt.imshow(np.reshape(test_image, [28, 28]), cmap='gray')
plt.title('Test Image')
plt.axis('off')
plt.show()
然後用以下的程式,選出一個layer,把這層的filter所看到的圖,顯示出來
layer_model = Model(inputs=model.input, outputs=model.get_layer('conv2d_1').output)
conv1_ = layer_model.predict(test_image)
print(conv1_.shape)
conv1_img_ = conv1_[0,:,:,:]
fig, axes = plt.subplots(4, 8, figsize=(15, 8))
fig.subplots_adjust(hspace=0.5, wspace=0.5)
for i, ax in enumerate(axes.flat):
ax.imshow(conv1_img_[i,:,:], cmap='gray')
xlabel = "Filter : {}".format(i+1)
ax.set_xlabel(xlabel)
ax.set_xticks([])
ax.set_yticks([])
fig.suptitle('Output of the first convolutional layer')
plt.show()
會發現這層的32個過濾器,有的特別看直線、有的看斜線、有的看轉角...,看來CNN機器學習所看到的世界,跟人看到的很不一樣,但仍然是宇宙中其中一種認識世界的方法