弹窗视频网站,霸州建设局网站,前端页面设计图,医院类网站建设与维护一、说明 PyTorch提供了两个数据原语#xff1a;torch.utils.data.DataLoader和torch.utils.data.Dataset#xff0c;允许您使用预加载的数据集以及您自己的数据。数据集存储样本及其相应的标签#xff0c;DataLoader 围绕数据集包装一个可迭代对象#xff0c;以便轻松访问… 一、说明 PyTorch提供了两个数据原语torch.utils.data.DataLoader和torch.utils.data.Dataset允许您使用预加载的数据集以及您自己的数据。数据集存储样本及其相应的标签DataLoader 围绕数据集包装一个可迭代对象以便轻松访问样本。 PyTorch域库提供了许多示例预加载数据集例如FashionMNIST它子类torch.utils.data.Dataset并实现特定于特定数据的函数。可以在此处找到它们并用作原型设计和基准测试模型的示例 图像数据集文本数据集音频数据集 二、加载数据集 我们将从TorchVision加载FashionMNIST数据集。FashionMNIST是Zalando文章图像的数据集由60,000个训练示例和10,000个测试示例组成。每个示例包含一个 28x28 灰度图像和一个来自 10 个类之一的相关标签。 每张图片高 28 像素宽 28 像素共 784 像素。这 10 个类告诉它是什么类型的图像。例如T型短裤/上衣裤子套头衫连衣裙包踝靴等。灰度是介于 0 到 255 之间的值用于测量黑白图像的强度。强度值从白色增加到黑色。例如白色为 0黑色为 255。 我们使用以下参数加载 FashionMNIST 数据集 根是存储训练/测试数据的路径。训练指定训练或测试数据集。download 如果数据在根目录中不可用则 True 从互联网下载数据。转换指定特征和标注转换。 import torch
from torch.utils.data import Dataset
from torchvision import datasets
from torchvision.transforms import ToTensor, Lambda
import matplotlib.pyplot as plttraining_data datasets.FashionMNIST(rootdata,trainTrue,downloadTrue,transformToTensor()
)test_data datasets.FashionMNIST(rootdata,trainFalse,downloadTrue,transformToTensor()
) 三、迭代和可视化数据集 我们可以像列表一样手动索引数据集training_data[index]。我们使用 matplotlib 来可视化训练数据中的一些样本。 labels_map {0: T-Shirt,1: Trouser,2: Pullover,3: Dress,4: Coat,5: Sandal,6: Shirt,7: Sneaker,8: Bag,9: Ankle Boot,
}
figure plt.figure(figsize(8, 8))
cols, rows 3, 3
for i in range(1, cols * rows 1):sample_idx torch.randint(len(training_data), size(1,)).item()img, label training_data[sample_idx] # Iterate training datafigure.add_subplot(rows, cols, i)plt.title(labels_map[label])plt.axis(off)plt.imshow(img.squeeze(), cmapgray)
plt.show() 四、准备数据以使用数据加载程序进行训练 数据集检索数据集的特征并一次标记一个样本。在训练模型时我们通常希望以“小批量”方式传递样本在每个时期重新洗牌数据以减少模型过度拟合并使用 Python 的多处理来加速数据检索。 在机器学习中需要指定数据集中的特征和标签。要素是输入标注是输出。我们训练特征并训练模型来预测标签。 DataLoader 是一个迭代对象它在一个简单的 API 中为我们抽象了这种复杂性。要使用数据加载器我们需要设置以下参数 数据是将用于训练模型的训练数据;以及用于评估模型的测试数据。批大小是每个批中要处理的记录数。随机播放是按索引随机抽取的数据。 from torch.utils.data import DataLoadertrain_dataloader DataLoader(training_data, batch_size64, shuffleTrue)
test_dataloader DataLoader(test_data, batch_size64, shuffleTrue) 五、遍历数据加载器 我们已将数据集加载到数据加载器中并可以根据需要循环访问数据集。下面的每次迭代都会返回一批train_features和train_labels分别包含 batch_size 64 个要素和标注。由于我们指定了 shuffle True因此在我们遍历所有批次后数据将被洗牌。 # Display image and label
train_features, train_labels next(iter(train_dataloader))
print(fFeature batch shape: {train_features.size()})
print(fLabels batch shape: {train_labels.size()})img train_features[0].squeeze()
label train_labels[0]
plt.imshow(img, cmapgray)
plt.show()
print(fLabel: {label}) NOrmalization是一种常见的数据预处理技术用于缩放或转换数据以确保每个特征的学习贡献相等。例如灰度图像中的每个像素都有一个介于 0 到 255 之间的值这些值是特征。如果一个像素值为 17另一个像素值为 197。像素重要性的分布将不均匀因为较高的像素体积会偏离学习。归一化会更改数据的范围而不会扭曲其在我们的功能之间的区别。进行此预处理是为了避免 预测精度降低模型学习的难度特征数据范围的不利分布 六、变换 数据并不总是以训练机器学习算法所需的最终处理形式出现。我们使用 transform 对数据执行一些操作并使其适合训练。 所有 TorchVision 数据集都有两个参数用于修改特征的转换和用于修改接受包含转换逻辑的可调用对象的标签target_transform。torchvision.transform模块提供了几种开箱即用的常用变换。 FashionMNIST 功能采用 PIL 图像格式标签为整数。对于训练我们需要特征作为规范化张量标签作为独热编码张量。为了进行这些转换我们使用ToTensor和Lamda。 from torchvision import datasets
from torchvision.transforms import ToTensor, Lambdads datasets.FashionMNIST(rootdata,trainTrue,downloadTrue,transformToTensor(),target_transformLambda(lambda y: torch.zeros(10, dtypetorch.float).scatter_(0, torch.tensor(y), value1))
) 七、ToTensor ToTensor 将 PIL 图像或 NumPy ndarray 转换为 FloatTensor并将图像的像素强度值缩放在 [0. 1.] 范围内。 八、Lambda Lambda 应用任何用户定义的 lambda 函数。在这里我们定义了一个函数来将整数转换为独热编码张量。它首先创建一个大小为 10我们数据集中的标签数量的张量并调用 scatter它在索引上分配一个 value1如标签 y 给出的那样。您也可以将torch.nn.functional.one_hot用作其他选项。 target_transform Lambda(lambda y: torch.zeros(10, dtypetorch.float).scatter_(dim0, indextorch.tensor(y), value1)) 下一 PyTorch 简介 3/7