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?