以《python深度学习》第五章第一个实验为例,神经网络结构如下:
首先最上面一个池化层max_pooling2d_1:MaxPooling2D
的结果是:(32,)
也就是说相对于下一个卷积层conv2d_2:Conv2D的输入是一个64个像素点的图片。
conv2d_2:Conv2D中卷积核是(3,3,64),注意,卷积核是一个3D张量
注意,卷积操作是在channel中操作的,意思也就是:
输入channel=32
输出channel=64
那么排列组合就是64*32,在这里实现了特征的组合
,所以需要的权重数量是3x3×64×32
卷积核中的数值会进行一个初始化,但是里面的数值其实就是权重值,
所以CNN的训练目标其实就是卷积核中每个元素的取值的最终确定。
卷积核矩阵其实就是权重矩阵的一个“子权重矩阵”
卷积层的权重矩阵示意如下:
左边32个feature map输入
绿色横向框代表input_channel
咖啡色纵向框代表output_channel
每个橙色小框代表卷积核中的一个小矩阵。
所以整个图总共有32*3*3*64个权重值,也就是我们的权重矩阵了。