morning,
I am confused. When i store the weights and bias from a convolutional layer using:
kernels_int_in =conv2d.weight.detach().cpu()
conv2d.bias.detach().cpu()
the output shape for weight is [out_channel,in_channel,kernal_height,Kernal_width] and the size of the bias is a 1D vector of size [out_channel].
when the weights are plotted using:
kernels_t = kernels_int_in - kernels_int_in.min()
kernels_t = kernels_t / kernels_t.max()
ind=0
fig, axarr = plt.subplots(4,32)
plt.subplots_adjust(wspace=.02, hspace=.02)
while ind !=128:
for idx in range(4):
for idy in range(32):
axarr[idx,idy].imshow(kernels_t[ind,0,:,:].squeeze())
# axarr[idx,idy].imshow(act[ind])
ind=ind+1
the question is, why are the in_channels stored and what are they telling me? Also over 30 epochs in my case the values of the out_channels do not change significantly, is this suggesting that the kernels are not appropriate since the overall error stays quite high?