将图像输入批次扁平化为CNN

将图像输入批次扁平化为CNN

欢迎回到这个神经网络编程系列。在这篇文章中,我们将可视化一个单一灰度图像的张量扁平化操作,并且我们将展示如何扁平化特定的张量轴,这在使用CNN时通常是必需的,因为我们处理的是输入批次,而不是单个输入。

在这里插入图片描述

让我们开始吧。

扁平化整个张量

张量的扁平化操作是卷积神经网络中的常见操作。这是因为卷积层的输出在传递到全连接层之前必须被扁平化。

在之前的文章中,我们学习了张量的形状以及重塑操作。扁平化操作是一种特定类型的重塑操作,其中所有的轴都被_压缩_或_合并_在一起。

为了扁平化一个张量,我们至少需要两个轴。这使得我们从尚未扁平的东西开始。现在让我们看看一个手写的来自MNIST数据集的数字8图像。这个图像具有2​个不同的维度,高度_和_宽度


在这里插入图片描述

高度和宽度分别是18 x 18​。这些维度告诉我们这是一个裁剪后的图像,因为MNIST数据集包含28 x 28​的图像。现在让我们看看这两个轴的高度和宽度如何被扁平化为长度为324​的单一轴。

上面的图像展示了我们扁平化的输出,具有长度为324​的单一轴。边缘的白色对应于图像顶部和底部的白色。

在这个例子中,我们扁平化了整个张量图像,但如果我们只想扁平化张量内的特定轴呢?这在使用CNN时通常是必需的。

让我们看看我们如何在代码中扁平化张量的特定轴,使用PyTorch。

扁平化张量的特定轴

在关于CNN输入张量形状的文章中,我们学习了卷积神经网络的张量输入通常具有4​个轴,一个用于批次大小,一个用于颜色通道,每个用于高度和宽度。

(批次大小,通道,高度,宽度)

让我们从这里开始,构建一个符合这些规格的张量。首先,假设我们有以下三个张量。

构建图像批次的张量表示
t1 = torch.tensor([
    [1,1,1,1],
    [1,1,1,1],
    [1,1,1,1],
    [1,1,1,1]
])

t2 = torch.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值