【发布时间】:2018-03-25 20:36:35
【问题描述】:
我想知道如何在 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, 128]。这里我不能使用 tf.concat 来组合 deconv1 和 deconv2。那我该怎么做???
编辑
这是我尝试实现的架构的图像:: 它与本文相关::
七。 He, W., Zhang, X. Y., Yin, F., & Liu, C. L. (2017)。深度直通 多向场景文本检测的回归。 arXiv 预印本 arXiv:1703.08289
【问题讨论】:
-
我脑海中浮现的第一个答案,基于Tensorflow API,你不能做这个串联操作。由于 concat 可以在一个轴上完成(即 tf.concat([t3, t4], 1) 在第一个轴上),另一个轴应该具有相同的形状。让我知道你为什么要这样做,你的目的是什么?
-
我尝试进行对象检测。该方法使用了一些卷积层,然后是池层(每个卷积层直接跟在池层之后)。然后我使用了反卷积层(UpSample),每个反卷积层采用不同的池层,例如 deconv1 将 pool1 作为输入,依此类推。我的问题在下一步:如何组合(融合)这些反卷积层???
-
你不能这样做,你不能连接两个不同形状的矩阵,这些矩阵是由不同的池化层产生的。编辑您的问题并发布您要使用的架构,我会写给您最终的答案并指出如何使用瓶颈管道架构,例如:arxiv.org/pdf/1701.03056.pdf
-
是的,我知道我不能使用 tf.concat,因为我问了这个问题。我想知道如何解决这个问题。我正在编辑我的问题,希望对您有用。并感谢您尝试帮助我。
标签: python-3.x tensorflow neural-network deep-learning conv-neural-network