我不理解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输出功能并节省内存 哪个部分错了?
谢谢
答案 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(一个因为你使用的是一个过滤器)