PyTorch - 35 - PyTorch数据集标准化 - Torchvision.Transforms.Normalize()

本文介绍了PyTorch中数据集的标准化,包括特征缩放的概念,通过代码示例展示了如何使用Torchvision.transforms.Normalize进行数据标准化。讨论了计算均值和标准差的简单与困难方法,并解释了使用标准化数据对训练过程的影响。
摘要由CSDN通过智能技术生成

Data Normalization

数据规范化的概念是一个通用概念,指的是将数据集的原始值转换为新值的行为。 新值通常相对于数据集本身进行编码,并以某种方式缩放。

Feature Scaling

因此,有时使用的数据标准化的另一个名称是特征缩放。该术语指的是以下事实:在对数据进行规范化时,我们经常将给定数据集的不同特征转换为相似的比例。

在这种情况下,我们不仅在考虑值的数据集,还在考虑具有多个特征(每个都有其on值)的元素的数据集。

例如,假设我们正在处理一个人的数据集,并且我们的数据集中有两个相关特征,即年龄和体重。在这种情况下,我们可以观察到这两个特征集的大小或比例是不同的,即平均权重大于年龄。

在比较或使用机器学习算法进行计算时,大小上的差异可能会成为问题。因此,这可能是我们可能希望通过特征缩放将这些特征的值缩放到某个类似比例的原因之一。

Normalize A Dataset In Code

让我们跳入一个代码示例。第一步是初始化我们的数据集,因此在本示例中,我们将使用到目前为止在该系列中一直使用的Fashion MNIST数据集。

train_set = torchvision.datasets.FashionMNIST(
    root='./data'
    ,train=True
    ,download=True
    ,transform=transforms.Compose([
        transforms.ToTensor()
    ])
)

通过将每个颜色通道的均值和标准差值传递给Normalize()变换,PyTorch允许我们使用刚刚看到的标准化过程来标准化数据集。

torchvision.transforms.Normalize(
      [meanOfChannel1, meanOfChannel2, meanOfChannel3] 
    , [stdOfChannel1, stdOfChannel2, stdOfChannel3] 
)

由于数据集中的图像只有一个通道,因此我们只需要传递均值和标准差值即可。为此,我们需要首先计算这些值。有时,这些值可能会在线发布到某个地方,因此我们可以通过这种方式获取它们。但是,如果有疑问,我们可以手动计算。

有两种方法可以完成。简单的方法,更困难的方法。如果数据集足够小以一次全部放入内存,则可以轻松实现。否则,我们必须遍历稍难的数据。

Calculating mean And std The Easy Way

简单的方法很容易。 我们要做的就是使用数据加载器加载数据集,并获得包含所有数据的单个批处理张量。 为此,我们将批次大小设置为等于训练集长度。

loader = DataLoader(train_set, batch_size=len(train_set), num_workers=1)
data = next(iter(loader))
data[0].mean()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值