在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是什么意思?
答案 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。网络架构:
和汇集: