Personally , I did seldom visulizations as i think they are too exaggerating and abstract which give few help to my work. But I will still show something in this article .
I will take the example from last article "cnn to train digit recognition" to visulise the convolution kernel and some output there. so the codes below can be appended after the last block following that article.
1. Kernel shape
# visualize weights import numpy as np W = model.layers[0].kernel.get_value(borrow=True) W = np.squeeze(W) print ("W shape : " , W.shape)
W shape : (3, 3, 32)
W[:,:,0] # print the content of 1st convolution kernel
array([[ 0.04594247, 0.03799061, -0.1205595 ], [ 0.11602765, -0.08880974, 0.04387789], [-0.06434739, 0.0857822 , 0.09397142]], dtype=float32)
2. Visualize the convolution kernel
# draw out the convolution kernel %matplotlib inline import matplotlib.pyplot as plt for i in range(32): sub = plt.subplot(4,8,i+1) # row 4, column 8, ith image plt.axis('off') sub.imshow(W[:,:,i], cmap=plt.cm.gray)
3. Print the shape after image is convolved by kernel
# output after convolution import theano convout1_f = theano.function(model.inputs,[convout1.output]) C1 = convout1_f([x_train[0]]) C1 = np.squeeze(C1) print("C1 Shape : ", C1.shape)
C1 Shape : (6, 6, 32)
Here you may need to install the theano by the way.
4. Visualize image after convolved by the kernel
%matplotlib inline import matplotlib.pyplot as plt for i in range(32): sub = plt.subplot(4,8,i+1) plt.axis('off') sub.imshow(C1[:,:,i], cmap=plt.cm.gray)
No comments:
Post a Comment