Tensorflow conolutional网络中的输入维度重塑

时间:2016-12-24 03:07:20

标签: tensorflow deep-learning dimensions

在tensorflow网站的专家mnist教程中,它有类似的内容:

x_image = tf.reshape(x, [-1,28,28,1])

我知道重塑就像是

tf.reshape(input,[batch_size,width,height,channel])

Q1:为什么batch_size等于-1? -1意味着什么?

当我下载代码时,还有一件我无法理解的事情

W_fc1 = weight_variable([7 * 7 * 64, 1024])

Q2:image_size * 64是什么意思?

2 个答案:

答案 0 :(得分:1)

  

Q1:为什么batch_size等于-1? -1意味着什么?

-1表示“为我计算这部分”。例如,如果我运行:

reshape([1, 2, 3, 4, 5, 6, 7, 8], [-1, 2])

它会创建两列,并且无论需要多少行都可以使所有内容都适合:

array([[1, 2],
       [3, 4],
       [5, 6],
       [7, 8]])
  

Q2:image_size * 64是什么意思?

该特定过滤器激活中的过滤器数量。 conv层中过滤器的形状遵循格式[height, width, # of input channels (number of filters in the previous layer), # of filters]

答案 1 :(得分:0)

当您将-1作为tf.reshape中的维度传递时,它会保留现有维度。来自文档:

  

如果形状的一个组件是特殊值-1,那么它的大小   计算尺寸以使总尺寸保持不变。在   特别是,[-1]的形状变平为1-D。最多一个组件   形状可以是-1。

对7 x 7 x 64的引用是因为在此示例之前应用的卷积层已将图像缩小为[7,7,64]的形状,并且输入到下一个完全连接的层需要单个维度,因此在示例的下一行中,张量从[7,7,64]重新整形为[7 * 7 * 64],因此它可以连接到FC层。

有关卷积和最大合并的工作原理的更多信息,the wikipedia page有一些有用的图形:

e.g。网络架构:

cnn architecture

和汇集:

cnn pooling