我是靠谱客的博主 跳跃身影,最近开发中收集的这篇文章主要介绍张量扁平化——CNN的Flatten操作,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

张量扁平化操作是卷积神经网络中的一个常见操作。这是因为在全连接层接受输入之前,传递给全连接层的卷积层输出必须被扁平化。我们了解到卷积神经网络的张量输入通常有4个轴,一个用于批处理大小,一个用于颜色通道,还有一个用于高度和宽度

即:(批量大小、通道、高度、宽度)
在这里插入图片描述

那么现在我们以一张图片为例,看看如何将它扁平化
在这里插入图片描述

这是一张彩色图片,也就是有r,g,b共三个通道,大小为128*128,按照上面的表示方法,我们可以将它表示为

[1,3,128,128]

code:
在这里插入图片描述

好吧,可是看到,张量已经被拉平了,达到了我们预期的目的。

但是,这仅仅是一张图片,如果是二张图片呢?
在这里插入图片描述

(假设仍按上述方法)

code:
在这里插入图片描述

好吧,结果并不好,因为我们需要对批处理张量中的每个图像进行单独的预测,因此扁平化的批次在我们的CNN中无法很好地起作用,所以现在我们一团糟。

解决方案是在保持batch 轴不变的情况下使每个图像变平。这意味着我们只想拉平张量的一部分。我们要使用高度和宽度轴和颜色通道轴展平。也就是展平(C,H,W)。

假设我们有输入5张彩色的图片(也就是5张为一个batch),

code:
在这里插入图片描述

结果十分符合我们所期望的。

所以**flatten(start_dim=1)**个较为不错的展平方法。

总结:

现在,我们应该对张量的展平操作有了一个很好的了解。我们知道如何展平整个张量,并且我们知道展平特定张量尺寸/轴,我们将在构建CNN时看到将其投入使用。

我的公众号:Math and Code
欢迎来关注啊!

最后

以上就是跳跃身影为你收集整理的张量扁平化——CNN的Flatten操作的全部内容,希望文章能够帮你解决张量扁平化——CNN的Flatten操作所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部