tiny_cnn实现了LeNet的字符识别功能,实现的方式也是利用卷集神经网络,整个网络共有6层,依次为convolution_layer<32,32,5,1,6>,average_pooling_layer<28,28,6,2>,
convolution_layer<14,14,5,6,16,connection_table>,average_pooling_layer<10,10,16,2>,convolution_layer<5,5,5,16,120>,fully_connected_layer<120,10>。
首先,第一层:convolution_layer<32,32,5,1,6>是对输入图像进行卷积,卷积核的大小是5x5,对输入图像使用了6个不同的卷积和分别进行卷积,目的是提取输入图像的不同特征,最后得出6个不同的输出。
第二层:average_pooling_layer<28,28,6,2>是对第一层的输出进行下采样,第一层的输出是28x28的数据,这里使用2x2的窗口对其进行求均值,然后下采样,得出14x14的输出。
第三层:convolution_layer<14,14,5,6,16,connection_table>,是再次对第二层的输出进行卷积,卷积核仍然采用的是5x5的窗口,这层的卷积是用一定规定的,这一层共有16个卷积核,每一个卷积核分别与多个输入相连,所以这里会有一个connection_table来标记每个卷积与对应的哪些输入相连接,connection_table的数据如下: