张量流中的连接层

时间:2017-10-30 14:34:56

标签: python tensorflow neural-network deep-learning conv-neural-network

如果在图片中看到2个3D张量t1 = [?, 1, 1, 1, 2048]t2 = [?, 3, 1, 1, 256],它们将如何连接?目前,我正在使用:

tf.concat([t1, t2], 4)

然而,鉴于我的架构有大量具有许多连接的层,我最终会有一个太大的(在通道/特征方面)初始化的张量。 这是实现连接图层的正确方法吗?

enter image description here

1 个答案:

答案 0 :(得分:3)

首先,初始层中的张量形状与您定义的不同。 1x11x33x1是应用于图片的过滤器的形状。卷积中还有两个参数: padding striding ,根据它们的确切值,结果形状可能会有很大不同。

在这种特殊情况下,空间形状不会改变,只有channels维度为2048256,这就是它们可以连接的原因。原始t1t2的串联将导致错误。

  

这是实现连接层的正确方法吗?

是的,特征映射连接是初始网络的关键思想之一,其实现确实使用tf.concat(例如参见Picture of the structure)。

请注意,此张量将在一个方向(通道/特征)上增长,但由于下采样而在空间维度上收缩,因此它不会变得太大。还要注意,这个张量是变换后的输入数据(图像),因此与权重不同,它不是初始化的,而是通过网络。权重将是张量1x1x2048=20481x3x224=6723x1x256=768等等 - 您可以看到它们根本不是很大,这是初始网络的另一个想法。