首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将不同形状的卷积层输出汇集到一个固定的形状,以通过完全连接的层

如何将不同形状的卷积层输出汇集到一个固定的形状,以通过完全连接的层
EN

Stack Overflow用户
提问于 2018-06-12 13:00:07
回答 1查看 45关注 0票数 0

我有不同大小的输入图像,我将它们通过CNN中的Conv层,然后我应该将Conv输出连接到一个完全连接的层进行分类。

由于该过程必须矢量化,因此输出必须具有相同的形状,以便一批图像可以用于前向传递。因此,对于在全连接层的输入处的所有图像具有相同形状的问题。

但是由于我的输入图像具有不同的形状,我的final Conv layer给出了不同形状的输出,我如何将来自Last Conv layer的不同形状的输出合并/重塑为固定形状,以便它们可以连接到即时FCN层?

此外,我曾考虑在处理之前将图像重塑为固定大小,但由于我的输入图像在largeSo中不同,因此存在性能准确性问题,尝试这样做。

EN

回答 1

Stack Overflow用户

发布于 2018-06-12 13:43:13

如果您的输入在所有示例中都是一致的(例如,如果为inputs = image1, image2,那么所有的image1都是相同的大小,所有的image2都是相同的大小,但image1.shape不一定与image2相同,您只需将最终的conv输出展平,并在传递到密集层之前将结果连接起来。

代码语言:javascript
复制
conv1_out = conv_network1(image1)
conv2_out = conv_network2(image2)              # could be same network
flat1 = tf.layers.flatten(conv1_out)
flat2 = tf.layers.flatten(conv2_out)
dense_in = tf.concat((flat1, flat2), axis=1)
dense_out = tf.layers.dense(dense_in, units)

或者,如果您的图像跨批次具有不同的大小,如果您有大量的空间特征,则空间池是另一个流行的选择。

代码语言:javascript
复制
flat1 = tf.reduce_mean(conv1_out, axis=(1, 2))
flat2 = tf.reduce_mean(conv2_out, axis=(1, 2))

您也可以使用max pooling,尽管行为略有不同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50809513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档