整个结构中包含三个convolution layer、三个pooling layer和两个fully connected layer。
每个层有多个Feature Map,每个Feature Map通过一种卷积滤波器提取输入的一种特征,然后每个Feature Map有多个神经元。
首先是数据层,测试数据100张为一批(batch_size),后面括号内是数据总大小。如100*32*32*3= 307200
Top shape: 100 3 32 32 (307200)
Top shape: 100 1 1 1 (100)
conv1(即产生图上 C1数据)层是一个卷积层,由32个特征图Feature Map构成。卷积核的大小是5*5,因为有pad为2,也就是每边增加两个单位的边界。 通过卷积之后,数据变成(32+2*2-5+1)*(32+2*2-5+1)
Top shape: 100 32 32 32 (3276800)
pool1 是一个降采样层,有32个16*16的特征图。降采样的核是2*2的,所以数据变成16*16.
Top shape: 100 32 16 16 (819200)
然后接入RELU1
Top shape: 100 32 16 16 (819200)
conv2 是卷积层,核还是5*5,pad还是2。
Top shape: 100 32 16 16 (819200)
然后接入RELU2
Top shape: 100 32 16 16 (819200)
pool2是降采样层,降采样核为2*2,则数据变成8*8
Top shape: 100 32 8 8 (204800)
conv3 是卷积层,核还是5*5,pad还是2,特征是64个。
然后接入RELU2
Top shape: 100 64 8 8 (409600)
pool3是降采样层,降采样核为2*2,则数据变成4*4
ip1 是全连接层。某个程度上可以认为是卷积层。输出为64. 原始模型中,从5*5的数据通过5*5的卷积得到1*1的数据。 现在的模型数据为4*4,得到的数据也是1*1,构成了数据中的全连接。
Top shape: 100 64 1 1 (6400)
ip2是第二个全连接层,输出为10,直接输出结果,数据的分类判断在这一层中完成。
Top shape: 100 64 8 8 (409600)
输入猫的图片
输出结果为:
['deer' 'airplane' 'cat' 'frog' 'bird']