5、二层并不是全连接的,本程序实现的是全连接另外,代码里将卷积层和子采用层合在一起,定义为“LeNetConvPoolLayer“(卷积采样层),这好理解,因为它们总是成对出现。但是有个地方需要注意,代码中将卷积后的输出直接作为子采样层的输入,而没有加偏置b再通过sigmoid函数进行映射,即没有了下图中fx后面的bx以及sigmoid映射,也即直接由fx得到Cx。最后,代码中第一个卷积层用的卷积核有20个,第二个卷积层用50个,而不是上面那张LeNet5图中所示的6个和16个。了解了这些,下面看代码:(1)导入必要的模块[python] v
6、iewplain copy1.import cPickle 2.import gzip 3.import os 4.import sys 5.import time 6. 7.import numpy 8. 9.import theano 10.import theano.tensor as T 11.from theano.tensor.signal import downsample 12.from theano.tensor.nnet import conv (2)定义CNN的基本"构件"CNN的基本构件包括
7、卷积采样层、隐含层、分类器,如下·定义LeNetConvPoolLayer(卷积+采样层)见代码注释:[python] viewplain copy1.""" 2.卷积+下采样合成一个层LeNetConvPoolLayer 3.rng:随机数生成器,用于初始化W 4.input:4维的向量,theano.tensor.dtensor4 1.filter_shape:(number of filters, num input feature maps,filter height, filter width) 2.image_shape:(b