不了解tensorflow中的mnist示例

时间:2017-03-02 09:20:35

标签: tensorflow

我不理解Tensorflow中“专家的深层次”中的mnist示例。

为了构建一个深层网络,我们堆叠了这种类型的几个层。第二层将为每个5x5补丁提供64个功能。

W_conv2 = weight_variable([5, 5, 32, 64])
b_conv2 = bias_variable([64])

h_conv2 = tf.nn.relu(conv2d(h_pool1, W_conv2) + b_conv2)
h_pool2 = max_pool_2x2(h_conv2)

我不知道为什么outputchannel是64。

我认为我们需要为64输出通道提供32 * 2 * 5 * 5滤波器,所以

W_conv2 = weight_variable([5, 5, 32, 2])

首先,我很抱歉英语不好 也许你很难理解我的要求 所以我',写sudo代码逻辑

inputimage = arr[1][28][28][32]
w_conv2 = arr[5][5][32][2]
output = [1][28][28][64]
for batch in 1
  for input in 32
    for output in 2
        output[][][][input*output] = conv(inputimage,w_conv2)

我认为它使用32 * 2滤镜制作62输出功能并节省内存 哪个部分错了?

谢谢

2 个答案:

答案 0 :(得分:2)

事实是输出维度与输入维度无关。

实际上,卷积的每个步骤都是W_conv2(W)与输入矩阵(I)的任何(n * m)部分之间的张量积:如果W具有维(n * m * k * h)和I {{1} },产品I * W的结果是一个维度为(n * m * k)的向量。

h在I和W中必须相同,但您对n, m, and k没有任何限制。

答案 1 :(得分:0)

它更大,因为您正在使用过滤器(5x5)并在每个输入数据的每个过滤器上使用它。所以它看起来像: 32 * 2 * 1(一个因为你使用的是一个过滤器)