我想知道如何在 Tensorflow 中组合两个具有不同空间空间的图层。
例如::
batch_size = 3
input1 = tf.ones([batch_size, 32, 32, 3], tf.float32)
input2 = tf.ones([batch_size, 16, 16, 3], tf.float32)
filt1 = tf.constant(0.1, shape = [3,3,3,64])
filt1_1 = tf.constant(0.1, shape = [1,1,64,64])
filt2 = tf.constant(0.1, shape = [3,3,3,128])
filt2_2 = tf.constant(0.1, shape = [1,1,128,128])
#first layer
conv1 = tf.nn.conv2d(input1, filt1, [1,2,2,1], "SAME")
pool1 = tf.nn.max_pool(conv1, [1,2,2,1],[1,2,2,1], "SAME")
conv1_1 = tf.nn.conv2d(pool1, filt1_1, [1,2,2,1], "SAME")
deconv1 = tf.nn.conv2d_transpose(conv1_1, filt1_1, pool1.get_shape().as_list(), [1,2,2,1], "SAME")
#seconda Layer
conv2 = tf.nn.conv2d(input2, filt2, [1,2,2,1], "SAME")
pool2 = tf.nn.max_pool(conv2, [1,2,2,1],[1,2,2,1], "SAME")
conv2_2 = tf.nn.conv2d(pool2, filt2_2, [1,2,2,1], "SAME")
deconv2 = tf.nn.conv2d_transpose(conv2_2, filt2_2, pool2.get_shape().as_list(), [1,2,2,1], "SAME")
deconv1形状为[3,8,8,64], deconv2形状为[3,4,4,12]。在这里,我不能使用 tf.concat 来组合 deconv1 和 deconv2 。那怎么办呢???
修改
这是我试图实现的架构的图像::它与本文相关::
七。 He,W.,Zhang,X。Y.,Yin,F。,& Liu,C。L.(2017)。深度直接 多方位场景文本检测的回归。 arXiv预印本 的arXiv:1703.08289
答案 0 :(得分:1)
我检查了你指向的纸张并且有它,考虑到这个网络的输入图像有大小H x W
(高度和宽度),我在每一层的一侧写出输出图像的大小。现在看一下我将输入箭头圈到该层的最底层,让我们检查它。该图层有两个输入,第一个来自前一个图层,其形状为H/2 x W/2
,第二个来自第一个图层,其大小为H/2 x W/2
。这两个输入合并在一起(不是连接,而是基于纸张加在一起)并进入最后Upsample
层,输出大小为H x W
的图像。
其他Upsample
图层也具有相同的输入。如您所见,所有合并操作都具有匹配形状。此外,所有合并图层的过滤器编号均为128,与其他合并层具有一致性。
您也可以使用concat
代替合并,但会产生更大的过滤器编号,请注意。合并两个形状为H/2 x W/2 x 128
的矩阵会产生相同的形状H/2 x W/2 x 128
,但在最后一个轴上连接两个矩阵,形状H/2 x W/2 x 128
会产生H/2 x W/2 x 256
。
我试图尽可能地指导你,希望这很有用。