PyTorch - 23 - 神经网络批处理 - 将图像批传递到PyTorch CNN

本文介绍了如何在PyTorch中将一批图像传递到卷积神经网络(CNN)。通过使用数据加载器创建批量数据,然后分析模型的输出和预测,解释了批处理在神经网络中的工作原理。通过argmax函数,对比预测标签和真实标签,展示了批处理预测的验证过程。
摘要由CSDN通过智能技术生成

PyTorch - 23 - 神经网络批处理 - 将图像批传递到PyTorch CNN

Passing A Batch Of Images To The Network

  1. 准备数据
  2. 建立模型
    a. 了解批处理如何传递到网络
  3. 训练模型
  4. 分析模型的结果

在上一集中,我们了解了正向传播以及如何将单个图像从训练集中传递到我们的网络。 现在,让我们看看如何使用一批图像来完成此操作。 我们将使用数据加载器获取批处理,然后将批处理传递到网络后,我们将解释输出。

首先,回顾一下上一集的代码设置。我们需要以下内容:

  1. 我们的导入。
  2. 我们的训练集。
  3. 我们的网络类定义。
  4. 禁用梯度跟踪。 (可选的)
  5. 网络类实例。

现在,我们将使用我们的训练集来创建一个新的DataLoader实例,并设置我们的batch_size = 10,这样输出将更易于管理。

> data_loader = torch.utils.data.DataLoader(
     train_set, batch_size=10
)

我们将从数据加载器中提取一个批次,并从该批次中解压缩图像和标签张量。我们将使用复数形式命名变量,因为当我们在数据加载器迭代器上调用next时,我们知道数据加载器会返回一批10张图片。

> batch = next(iter(data_loader))
> images, labels = batch

这给了我们两个张量,一个图像张量和一个对应标签的张量。

在上一集中,当我们从训练集中提取单个图像时,我们不得不unsqueeze() 张量以添加另一个维度,该维度将有效地将单例图像转换为一个大小为1的批处理。现在我们正在使用数据加载器,默认情况下我们正在处理批处理,因此不需要进一步的处理。

数据加载器返回一批图像,这些图像被打包到单个张量中,该张量具有反映以下轴的形状。

(批量大小,输入通道,高度,宽度)

这意味着张量的形状是良好的形状,无需将其松开。 ;)

> images.shape
torch.Size([10, 1, 28, 28])

> labels.shape
torch.Size([10])

让我们解释这两种形状。图像张量的第一个轴告诉我们,我们有一批十张图像。这十个图像具有一个高度和宽度为28的单一颜色通道。

标签张量的单轴形状为十,对应于我们批中的十个图像。每个图像一个标签。

好的。通过将图像张量传递到网络来进行预测。

> preds = network(images)

> preds.shape
torch.Size([10, 10])

> preds
tensor(
    [
        [ 0.1072, -0.1255, -0.0782, 
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值