def conv2d(x, W):
return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME')
def max_pool_2x2(x):
return tf.nn.max_pool(x, ksize=[1, 2, 2, 1],
strides=[1, 2, 2, 1], padding='SAME')
这是Tensorflow网站上http://camel.apache.org/simple.html教程的代码。
我有两个问题:
1)Deep MNIST for experts k-size是一个长度大于4的整数列表,它指的是max-pool窗口的大小。考虑到它是一个2X2窗口,难道不仅仅是[2,2]吗?我的意思是为什么它[1,2,2,1]而不是[2,2]?
2)如果我们在第一个步骤上迈出了一步。为什么我们需要一个4值的向量,一个值不够?
strides = [1]
3)如果填充='相同'为什么图像尺寸减少一半? (在第一次卷积过程中从28 X 28到14 X 14)
答案 0 :(得分:1)
我不确定您在此问题中提及哪些文档。 maxpool窗口确实是2x2。
步长可能因尺寸而异。 4矢量是最常见的情况,假设您想要跳过批处理中的图像,跳过不同的高度和宽度,甚至可能基于通道跳过。这很难使用,但已被遗留下来。
如果沿每个方向的步幅为2,则跳过可能用于最大池化的所有其他像素。如果您将跳过大小设置为[1,1,1,1]并且填充相同,那么您确实会返回相同大小的结果。填充"相同"指的是对图像进行零填充,以便为图像添加高度内核高度和内核宽度宽度的边框。