卷积层的参数和神经元个数计算

假设:

当前卷积层的输入是:6x6x3

卷积层参数是:卷积核大小 3x3 ;stride=1, padding=0; 卷积核个数就是3;

那么卷积层的输出就是:(W -F +2*P)/ S + 1 =(6 - 3 + 2*0)/ 1 + 1 = 4,数据就是 4x4x3

那么问题就是:卷积层的参数是多少?

首先分析卷积操作的过程:

输入是3个通道的6x6,输出的是3个4x4的feature map。

每一个3x3的卷积核,在输入的6x6x3上滑动卷积。卷积核的每一次滑动,实质上的操作就是选取它所覆盖的元素(先不同通道的同位置元素相加),输入到一个神经元(神经元就是一个线性方程f(x) +bias,卷积核参数就是线性方程的权值参数),卷积核选取的元素与神经元参数,即卷积核参数进行点乘求和,这就完成了一次滑动卷积,得到了输出的feature map中的一个元素。

不同的卷积核卷积得到代表不同特征的feature map。

也就是说,输出的feature map中的每一个元素都对应一个神经元的输出一个卷积的参数被生成feature map的所对应的所有神经元共享。输出有3个feature map,每个feature map有4x4 =16个神经元,所以这个卷积层有16x3=48个神经元。

对于卷积的参数个数的话,每一个feature map都是共享对应的卷积核的参数的。卷积核的参数是:3x3 + 1 =10。共3个卷积核,所以卷积核参数就是:3 x 10 =30个参数。

综上:卷积核才是代表卷积过程中,参数/权值矩阵,因为同一个输出的feature map中的神经元权值共享的原因,神经元个数不等于参数个数,中间差了feature map大小的倍数。

1、提取一下神经元个数计算公式就是:输出feature map * 卷积核个数。

2、如果计算卷积层的全连接个数,就是(卷积核H * 卷积核W + 1偏置) * 神经元个数

3、卷积层参数计算公式: (卷积核H * 卷积核W + 1) * 卷积核个数 

你可能感兴趣的:(cnn,人工智能,神经网络,深度学习,计算机视觉)