Visualising CNN filter weights as numpy array in tensorflow

Viewed 950

I have trained a 2 layer convolution neural network layer CNN to perform classification on 64 channels EEG dataset. The model has good both training, validation and testing accuracies. Now I want to see the weights learned by model for each channel(feature), I managed to export and save the filter weights as numpy array. When I read and display my filters weights, each filter has two arrays inside, one with 10 values and another with 11 values. I have 32 filters in layer 1 and 64 in layer 2. All the filters look like this.

(array([2, 3, 1, 2, 8, 2, 2, 1, 1, 3]), array([-0.17596437, -0.14086468, -0.10576499, -0.0706653 , -0.03556561, -0.00046591, 0.03463378, 0.06973347, 0.10483316, 0.13993285, 0.17503254]))

I fail to interpret this in relation to my 64 channels as I am interested to know the weight learned by each channel.Is my weight saving method right?,If right how do I match with the 64 features?,as I have 10 values in the first array and 11 values in the second array of the same filter.

My first and second convolution layers look like this

#weight and bias the first convolution layer
W_conv1 = weight_variable([5, 5, 1, 32])
b_conv1 = bias_variable([32])

#first convolution and pooling 
h_conv1 = tf.nn.relu(conv2d(x_iput, W_conv1) + b_conv1)
h_pool1 = max_pool_2x2(h_conv1)

#weight and bias of the second convolution layer
W_conv2 = weight_variable([5, 5, 32, 64])
b_conv2 = bias_variable([64])

#second convolution and pooling 
h_conv2 = tf.nn.relu(conv2d(h_pool1, W_conv2) + b_conv2)
h_pool2 = max_pool_2x2(h_conv2)

After training my model, this is how I save my weights of convolution layer 1

with tf.variable_scope('conv1', reuse=True) as scope_conv:
    Conv1_weights = W_conv1.eval()

    with open("conv1.weights.npz", "wb") as outfile:
       np.save(outfile, Conv1_weights)

To save the weights I followed a question from here

1 Answers
Related