概述
张量扁平化操作是卷积神经网络中的一个常见操作。这是因为在全连接层接受输入之前,传递给全连接层的卷积层输出必须被扁平化。我们了解到卷积神经网络的张量输入通常有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操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复