From 409804c2842ffc6460feb9a400a3c67e038066d5 Mon Sep 17 00:00:00 2001 From: sun <2818133456@qq.com> Date: Thu, 29 Jun 2023 21:53:51 +0800 Subject: [PATCH 1/3] tensors and transforms --- docs/2.0/img/fashion_mnist.png | Bin 0 -> 31452 bytes docs/2.0/img/fashion_mnist2.png | Bin 0 -> 9750 bytes .../datasets_dataloaders.md | 189 ++++++++++++++++++ .../Introduction_to_PyTorch/transforms.md | 91 +++++++++ mkdocs.yml | 2 + 5 files changed, 282 insertions(+) create mode 100644 docs/2.0/img/fashion_mnist.png create mode 100644 docs/2.0/img/fashion_mnist2.png create mode 100644 docs/2.0/tutorials/Introduction_to_PyTorch/datasets_dataloaders.md create mode 100644 docs/2.0/tutorials/Introduction_to_PyTorch/transforms.md diff --git a/docs/2.0/img/fashion_mnist.png b/docs/2.0/img/fashion_mnist.png new file mode 100644 index 0000000000000000000000000000000000000000..da21cc0512e7c91d5cbec76dbae79d278e891a02 GIT binary patch literal 31452 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 H`RP9Z3i(nt literal 0 HcmV?d00001 diff --git a/docs/2.0/img/fashion_mnist2.png b/docs/2.0/img/fashion_mnist2.png new file mode 100644 index 0000000000000000000000000000000000000000..ae9b3b1407ccc4758d7d07fbd62120c8d7b554f1 GIT binary patch literal 9750 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 译者:[Daydaylight](https://github.com/Daydaylight) +> +> 项目地址:https://pytorch.apachecn.org/2.0/tutorials/datasets_dataloaders +> +> 原始地址:https://pytorch.org/tutorials/beginner/basics/data_tutorial.html + +处理数据样本的代码可能会变得杂乱无章,难以维护;我们希望我们的数据集代码与我们的模型训练代码分段,以提高可读性和模块化。 +PyTorch提供了两个数据基元: ``torch.utils.data.DataLoader``和``torch.utils.data.Dataset``。允许你使用预先加载的数据集以及你自己的数据。 +``Dataset``存储样本和它们相应的标签,``DataLoader``在``Dataset``基础上添加了一个迭代器,迭代器可以迭代数据集,以便能够轻松地访问``Dataset``中的样本。 + +PyTorch领域库提供了一些预加载的数据集(如FashionMNIST),这些数据集是``torch.utils.data.Dataset``的子类,并实现特定数据的功能。它们可以被用来为你的模型制作原型和基准。你可以找到它们这里:[Image Datasets](https://pytorch.org/vision/stable/datasets.html)、[Text Datasets](https://pytorch.org/text/stable/datasets.html),和[Audio Datasets](https://pytorch.org/audio/stable/datasets.html) + +##加载一个数据集 + +下面是一个如何从TorchVision加载[Fashion-MNIST](https://research.zalando.com/project/fashion_mnist/fashion_mnist/)数据集的例子。 +Fashion-MNIST是一个由60,000个训练实例和10,000个测试实例组成的Zalando的文章图像数据集。 +每个例子包括一个28×28的灰度图像和10个类别中的一个相关标签。 +我们加载 [FashionMNIST Dataset](https://pytorch.org/vision/stable/datasets.html#fashion-mnist) ,参数如下: + - ``root`` 是存储训练/测试数据的路径, + - ``train`` 指定训练或测试数据集, + - ``download=True`` 如果``root``没有数据,就从网上下载数据。 + - ``transform`` 和 ``target_transform`` 指定特征和标签的转换。 +```py +import torch +from torch.utils.data import Dataset +from torchvision import datasets +from torchvision.transforms import ToTensor +import matplotlib.pyplot as plt + + +training_data = datasets.FashionMNIST( + root="data", + train=True, + download=True, + transform=ToTensor() +) + +test_data = datasets.FashionMNIST( + root="data", + train=False, + download=True, + transform=ToTensor() +) +``` + + + +## 迭代和可视化数据集 + +我们可以像列表一样手动索引``Datasets``:``training_data[index]``。 +我们使用``matplotlib``来可视化我们训练数据中的一些样本。 + + +```py +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] + figure.add_subplot(rows, cols, i) + plt.title(labels_map[label]) + plt.axis("off") + plt.imshow(img.squeeze(), cmap="gray") +plt.show() +``` +![https://pytorch.apachecn.org/2.0/img/fashion_mnist.png](https://pytorch.apachecn.org/2.0/img/fashion_mnist.png) + +## 为你的文件创建一个自定义数据集 +一个自定义的数据集类必须实现三个函数: `__init__`, `__len__`, 和 `__getitem__`。 +看看这个实现;FashionMNIST的图片被存储在一个`img_dir'`的目录中,而它们的标签则分别存储在一个CSV文件``annotations_file`中。 + +在接下来的章节中,我们将分解这些函数中的每一个发生了什么。 +```py +import os +import pandas as pd +from torchvision.io import read_image + +class CustomImageDataset(Dataset): + def __init__(self, annotations_file, img_dir, transform=None, target_transform=None): + self.img_labels = pd.read_csv(annotations_file) + self.img_dir = img_dir + self.transform = transform + self.target_transform = target_transform + + def __len__(self): + return len(self.img_labels) + + def __getitem__(self, idx): + img_path = os.path.join(self.img_dir, self.img_labels.iloc[idx, 0]) + image = read_image(img_path) + label = self.img_labels.iloc[idx, 1] + if self.transform: + image = self.transform(image) + if self.target_transform: + label = self.target_transform(label) + return image, label +``` +### __init__ +在实例化数据集对象时,__init__函数被运行一次。我们初始化包含图像的目录、注释文件和两种转换(下一节将详细介绍)。 + +标签.csv文件看起来像: +```py +tshirt1.jpg, 0 +tshirt2.jpg, 0 +...... +ankleboot999.jpg, 9 + +``` + +```py +def __init__(self, annotations_file, img_dir, transform=None, target_transform=None): + self.img_labels = pd.read_csv(annotations_file) + self.img_dir = img_dir + self.transform = transform + self.target_transform = target_transform +``` +### __len__ +函数__len__返回我们数据集中的样本数。 +Example: +```py +def __len__(self): + return len(self.img_labels) +``` +### __getitem__ + + +函数 __getitem__ 从数据集中给定的索引``idx``处加载并返回一个样本。根据索引,它确定图像在磁盘上的位置,用``read_image``将其转换为张量,从``self.img_labels``的csv数据中获取相应的标签。从``self.img_labels``中的csv数据中获取相应的标签,对它们调用transform函数(如果适用),并返回张量图像和相应的标签的元组。 + + +```py +def __getitem__(self, idx): + img_path = os.path.join(self.img_dir, self.img_labels.iloc[idx, 0]) + image = read_image(img_path) + label = self.img_labels.iloc[idx, 1] + if self.transform: + image = self.transform(image) + if self.target_transform: + label = self.target_transform(label) + return image, label +``` +## 用DataLoaders准备你的数据进行训练 + + ``Dataset``每次检索一个我们数据集的特征和标签样本。在训练一个模型时,我们通常希望以 "小批量 "的方式传递样本,在每个周期重新洗牌数据以减少模型的过拟合,并使用Python的``multiprocessing``来加快数据的检索速度。 + +`DataLoader'是一个可迭代的,它用一个简单的API为我们抽象出这种复杂性。 +```py +from torch.utils.data import DataLoader + +train_dataloader = DataLoader(training_data, batch_size=64, shuffle=True) +test_dataloader = DataLoader(test_data, batch_size=64, shuffle=True) +``` +## 遍历DataLoader +我们已经将该数据集加载到``DataLoader``中,并可以根据需要迭代该数据集。下面的每次迭代都会返回一批``train_features``和``train_labels``(分别包含``batch_size=64``的特征和标签)。因为我们指定了``shuffle=True``,在我们遍历所有批次后,数据会被洗牌(为了更精细地控制数据加载顺序的精细控制,请看[Samplers](https://pytorch.org/docs/stable/data.html#data-loading-order-and-sampler))。 + +```py +# 显示图像和标签。 +train_features, train_labels = next(iter(train_dataloader)) +print(f"Feature batch shape: {train_features.size()}") +print(f"Labels batch shape: {train_labels.size()}") +img = train_features[0].squeeze() +label = train_labels[0] +plt.imshow(img, cmap="gray") +plt.show() +print(f"Label: {label}") +``` +输出: + +![https://pytorch.apachecn.org/2.0/img/fashion_mnist2.png](https://pytorch.apachecn.org/2.0/img/fashion_mnist2.png) +```py +Feature batch shape: torch.Size([64, 1, 28, 28]) +Labels batch shape: torch.Size([64]) +Label: 5 +``` +## 阅读更多 +- [torch.utils.data API](https://pytorch.org/docs/stable/data.html) \ No newline at end of file diff --git a/docs/2.0/tutorials/Introduction_to_PyTorch/transforms.md b/docs/2.0/tutorials/Introduction_to_PyTorch/transforms.md new file mode 100644 index 000000000..482039405 --- /dev/null +++ b/docs/2.0/tutorials/Introduction_to_PyTorch/transforms.md @@ -0,0 +1,91 @@ +# TRANSFORMS + +> 译者:[Daydaylight](https://github.com/Daydaylight) +> +> 项目地址:https://pytorch.apachecn.org/2.0/tutorials/transforms +> +> 原始地址:https://pytorch.org/tutorials/beginner/basics/transforms_tutorial.html + + +数据并不总是以训练机器学习算法所需的最终处理形式出现。我们使用变换来对数据进行一些处理,使其适合训练。 + +所有的TorchVision数据集都有两个参数-``transform``用于修改特征和``target_transform``用于修改标签,它们接受包含转换逻辑的callables。[torchvision.transforms](https://pytorch.org/vision/stable/transforms.html)模块提供了几个常用的转换,开箱即用。 +FashionMNIST的特征是PIL图像格式,而标签是整数。对于训练,我们需要将特征作为归一化的张量,将标签作为一热编码的张量。 +为了进行这些转换,我们使用 "ToTensor "和 "Lambda"。 +```py +import torch +from torchvision import datasets +from torchvision.transforms import ToTensor, Lambda + +ds = datasets.FashionMNIST( + root="data", + train=True, + download=True, + transform=ToTensor(), + target_transform=Lambda(lambda y: torch.zeros(10, dtype=torch.float).scatter_(0, torch.tensor(y), value=1)) +) +``` + +输出: +```py +Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-images-idx3-ubyte.gz +Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-images-idx3-ubyte.gz to data/FashionMNIST/raw/train-images-idx3-ubyte.gz + + 0%| | 0/26421880 [00:00 Date: Fri, 30 Jun 2023 13:45:28 +0800 Subject: [PATCH 2/3] Update datasets_dataloaders.md --- .../datasets_dataloaders.md | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/docs/2.0/tutorials/Introduction_to_PyTorch/datasets_dataloaders.md b/docs/2.0/tutorials/Introduction_to_PyTorch/datasets_dataloaders.md index 1cc0212ec..c5072855c 100644 --- a/docs/2.0/tutorials/Introduction_to_PyTorch/datasets_dataloaders.md +++ b/docs/2.0/tutorials/Introduction_to_PyTorch/datasets_dataloaders.md @@ -2,9 +2,9 @@ > 译者:[Daydaylight](https://github.com/Daydaylight) > -> 项目地址:https://pytorch.apachecn.org/2.0/tutorials/datasets_dataloaders +> 项目地址: > -> 原始地址:https://pytorch.org/tutorials/beginner/basics/data_tutorial.html +> 原始地址: 处理数据样本的代码可能会变得杂乱无章,难以维护;我们希望我们的数据集代码与我们的模型训练代码分段,以提高可读性和模块化。 PyTorch提供了两个数据基元: ``torch.utils.data.DataLoader``和``torch.utils.data.Dataset``。允许你使用预先加载的数据集以及你自己的数据。 @@ -22,6 +22,7 @@ Fashion-MNIST是一个由60,000个训练实例和10,000个测试实例组成的Z - ``train`` 指定训练或测试数据集, - ``download=True`` 如果``root``没有数据,就从网上下载数据。 - ``transform`` 和 ``target_transform`` 指定特征和标签的转换。 + ```py import torch from torch.utils.data import Dataset @@ -45,14 +46,11 @@ test_data = datasets.FashionMNIST( ) ``` - - ## 迭代和可视化数据集 我们可以像列表一样手动索引``Datasets``:``training_data[index]``。 我们使用``matplotlib``来可视化我们训练数据中的一些样本。 - ```py labels_map = { 0: "T-Shirt", @@ -77,13 +75,16 @@ for i in range(1, cols * rows + 1): plt.imshow(img.squeeze(), cmap="gray") plt.show() ``` + ![https://pytorch.apachecn.org/2.0/img/fashion_mnist.png](https://pytorch.apachecn.org/2.0/img/fashion_mnist.png) ## 为你的文件创建一个自定义数据集 + 一个自定义的数据集类必须实现三个函数: `__init__`, `__len__`, 和 `__getitem__`。 看看这个实现;FashionMNIST的图片被存储在一个`img_dir'`的目录中,而它们的标签则分别存储在一个CSV文件``annotations_file`中。 在接下来的章节中,我们将分解这些函数中的每一个发生了什么。 + ```py import os import pandas as pd @@ -109,10 +110,13 @@ class CustomImageDataset(Dataset): label = self.target_transform(label) return image, label ``` + ### __init__ + 在实例化数据集对象时,__init__函数被运行一次。我们初始化包含图像的目录、注释文件和两种转换(下一节将详细介绍)。 标签.csv文件看起来像: + ```py tshirt1.jpg, 0 tshirt2.jpg, 0 @@ -128,19 +132,21 @@ def __init__(self, annotations_file, img_dir, transform=None, target_transform=N self.transform = transform self.target_transform = target_transform ``` + ### __len__ + 函数__len__返回我们数据集中的样本数。 + Example: + ```py def __len__(self): return len(self.img_labels) ``` ### __getitem__ - 函数 __getitem__ 从数据集中给定的索引``idx``处加载并返回一个样本。根据索引,它确定图像在磁盘上的位置,用``read_image``将其转换为张量,从``self.img_labels``的csv数据中获取相应的标签。从``self.img_labels``中的csv数据中获取相应的标签,对它们调用transform函数(如果适用),并返回张量图像和相应的标签的元组。 - ```py def __getitem__(self, idx): img_path = os.path.join(self.img_dir, self.img_labels.iloc[idx, 0]) @@ -152,18 +158,22 @@ def __getitem__(self, idx): label = self.target_transform(label) return image, label ``` + ## 用DataLoaders准备你的数据进行训练 ``Dataset``每次检索一个我们数据集的特征和标签样本。在训练一个模型时,我们通常希望以 "小批量 "的方式传递样本,在每个周期重新洗牌数据以减少模型的过拟合,并使用Python的``multiprocessing``来加快数据的检索速度。 `DataLoader'是一个可迭代的,它用一个简单的API为我们抽象出这种复杂性。 + ```py from torch.utils.data import DataLoader train_dataloader = DataLoader(training_data, batch_size=64, shuffle=True) test_dataloader = DataLoader(test_data, batch_size=64, shuffle=True) ``` + ## 遍历DataLoader + 我们已经将该数据集加载到``DataLoader``中,并可以根据需要迭代该数据集。下面的每次迭代都会返回一批``train_features``和``train_labels``(分别包含``batch_size=64``的特征和标签)。因为我们指定了``shuffle=True``,在我们遍历所有批次后,数据会被洗牌(为了更精细地控制数据加载顺序的精细控制,请看[Samplers](https://pytorch.org/docs/stable/data.html#data-loading-order-and-sampler))。 ```py @@ -177,13 +187,16 @@ plt.imshow(img, cmap="gray") plt.show() print(f"Label: {label}") ``` + 输出: ![https://pytorch.apachecn.org/2.0/img/fashion_mnist2.png](https://pytorch.apachecn.org/2.0/img/fashion_mnist2.png) + ```py Feature batch shape: torch.Size([64, 1, 28, 28]) Labels batch shape: torch.Size([64]) Label: 5 ``` + ## 阅读更多 -- [torch.utils.data API](https://pytorch.org/docs/stable/data.html) \ No newline at end of file +- [torch.utils.data API](https://pytorch.org/docs/stable/data.html) From ace0cc11be59262a2febdcbbaabbb70d148841bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=89=87=E5=88=BB?= Date: Fri, 30 Jun 2023 13:46:37 +0800 Subject: [PATCH 3/3] Update transforms.md --- .../Introduction_to_PyTorch/transforms.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/docs/2.0/tutorials/Introduction_to_PyTorch/transforms.md b/docs/2.0/tutorials/Introduction_to_PyTorch/transforms.md index 482039405..5ac5e4c5c 100644 --- a/docs/2.0/tutorials/Introduction_to_PyTorch/transforms.md +++ b/docs/2.0/tutorials/Introduction_to_PyTorch/transforms.md @@ -2,16 +2,16 @@ > 译者:[Daydaylight](https://github.com/Daydaylight) > -> 项目地址:https://pytorch.apachecn.org/2.0/tutorials/transforms +> 项目地址: > -> 原始地址:https://pytorch.org/tutorials/beginner/basics/transforms_tutorial.html - +> 原始地址: 数据并不总是以训练机器学习算法所需的最终处理形式出现。我们使用变换来对数据进行一些处理,使其适合训练。 所有的TorchVision数据集都有两个参数-``transform``用于修改特征和``target_transform``用于修改标签,它们接受包含转换逻辑的callables。[torchvision.transforms](https://pytorch.org/vision/stable/transforms.html)模块提供了几个常用的转换,开箱即用。 FashionMNIST的特征是PIL图像格式,而标签是整数。对于训练,我们需要将特征作为归一化的张量,将标签作为一热编码的张量。 为了进行这些转换,我们使用 "ToTensor "和 "Lambda"。 + ```py import torch from torchvision import datasets @@ -27,6 +27,7 @@ ds = datasets.FashionMNIST( ``` 输出: + ```py Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-images-idx3-ubyte.gz Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-images-idx3-ubyte.gz to data/FashionMNIST/raw/train-images-idx3-ubyte.gz @@ -76,10 +77,12 @@ Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-labe Extracting data/FashionMNIST/raw/t10k-labels-idx1-ubyte.gz to data/FashionMNIST/raw ``` - ## ToTensor() + [ToTensor](https://pytorch.org/vision/stable/transforms.html#torchvision.transforms.ToTensor)将PIL图像或NumPy的``ndarray``转换为``FloatTensor``。图像的像素强度值在[0., 1.]范围内缩放。 + ## Lambda Transforms + Lambda transforms 应用任何用户定义的lambda函数。在这里,我们定义了一个函数来把整数变成一个单热编码的张量。 它首先创建一个大小为10(我们数据集中的标签数量)的零张量,然后调用[scatter_](https://pytorch.org/docs/stable/generated/torch.Tensor.scatter_.html) ,指定了一个``value=1``在标签``y``所给的索引上。 @@ -87,5 +90,6 @@ Lambda transforms 应用任何用户定义的lambda函数。在这里,我们 target_transform = Lambda(lambda y: torch.zeros( 10, dtype=torch.float).scatter_(dim=0, index=torch.tensor(y), value=1)) ``` + ### 阅读更多 -- [torchvision.transforms API](https://pytorch.org/vision/stable/transforms.html) \ No newline at end of file +- [torchvision.transforms API](https://pytorch.org/vision/stable/transforms.html)