TensorFlow的中文文档的深入MNIST中的【构建一个多层卷积网络】开始
个人理解:
1. 卷积
卷积层的四个参数:
F:滤波器尺寸
S:步长
K:滤波器个数(一般选择2的幂指数倍)
P:填补
a) 原文:【我们的卷积使用1步长(stride size),0边距(paddingsize)的模板,保证输出和输入是同一个大小。】
tensorflow中conv2d的"padding"参数可以设为两个值SAME,VALID
SAME: edge_row = (kernel_row - 1) / 2; edge_cols = (kernel_cols - 1) / 2;
VALID:edge_row = edge_cols = 0;
edge_row就是边的行数,kernel_row就是卷积核的行数
Padding size选择为’SAME’就表示会用0填充。中文翻译为0边距,有点问题。所以当选择SAME时P=(5-1)/2=2
b) 原文:【卷积在每个5x5的patch中算出32个特征。卷积的权重张量形状是[5, 5, 1, 32],前两个维度是patch的大小,接着是输入的通道数目,最后是输出的通道数目。】
表示卷积核大小是5x5,一共有32个这样的滤波器。
计算公式:
Input : W1*H1*D1 28*28*1
Output :W2*H2*D2
W2=(W1-F+2P)/S+1 H2=(H1-F+2P)/S+1 D2=K
基本使用里提到Tensorflow使用tensor表示数据,Tensor是一个类型化的多维数组,相当于常规的程序数据。可以将一小组图像集表示为一个四维浮点数数组。这四个维度分别是[batch, height, width, channels]
所以这句
原文:【为了用这一层,我们把x变成一个4d向量,其第2、第3维对应图片的宽、高,最后一维代表图片的颜色通道数(因为是灰度图所以这里的通道数为1,如果是rgb彩色图,则为3)】
x_image =tf.reshape(x, [-1,28,28,1])
中的-1会不会就对应batch,batch=-1又是什么意思暂时没搞明白【有网友回复说-1表示这个维度的值是根据其他几个维度值计算出来的】
2.池化
大小2x2,步长2所以空间尺寸会在池化层减小一半
Max pooling后output大小为14*14*32
输出图像的参数D只与滤波器个数K有关系,所以第二层卷积应该是采用了64个5*5大小的卷积核。
第二次池化后输出图像的大小为7*7*64
新闻热点
疑难解答