Вопрос или проблема
Я заметил, что DataLoader в PyTorch применяет масштабирование к входным данным с набором данных MNIST. Я предполагаю, что это какая-то нормализация или масштабирование, но как мне на самом деле узнать, какое преобразование применяется, и как его отключить?
Преобразование “ToTensor”, используемое набором данных, масштабирует элементы до диапазона [0,1].
Ответ или решение
В рамках изучения работы с библиотекой PyTorch и, в частности, с классом DataLoader, можно столкнуться с ситуацией, когда данные, получаемые из стандартных наборов данных, таких как MNIST, подвергаются автоматическому масштабированию. Это может вызвать вопросы: какие именно трансформации применяются, и как их отключить?
В PyTorch, данных, извлеченные из наборов, часто подлежат предварительной обработке для упрощения обучения нейронных сетей. В случае с MNIST, трансформация, которую вы, вероятно, наблюдали, — это ToTensor
. Это преобразование входит в состав пакета torchvision.transforms
и автоматически конвертирует входные данные, изменяя значения пикселей изображения из целочисленного диапазона [0, 255] в вещественную шкалу [0, 1]. Этот процесс выполняется для нормализации данных, чтобы ускорить и стабилизировать процесс обучения моделей машинного обучения.
Как проверить, какие трансформации применяются?
Чтобы узнать, какие именно трансформации используются в вашем наборе данных, следует обратиться к коду, где создается экземпляр объекта дата-сета. Обычно трансформации передаются либо в конструктор дата-сета, либо в виде отдельного аргумента. Например:
import torchvision.transforms as transforms
from torchvision.datasets import MNIST
transformations = transforms.Compose([
transforms.ToTensor(),
# Другие возможные трансформации
])
mnist_dataset = MNIST(root='path/to/data', train=True, transform=transformations, download=True)
В данном фрагменте кода применяются все указанные в transformations
преобразования, и именно здесь ToTensor
играет свою роль в нормализации.
Как отключить трансформацию?
Если вы хотите отключить преобразование ToTensor
, можете просто не указывать его в списке трансформаций. Например:
mnist_dataset = MNIST(root='path/to/data', train=True, download=True)
Заключение
Отслеживание и управление трансформациями в PyTorch — важная часть работы с данными, особенно когда вы сталкиваетесь с неожиданными изменениями формата или шкалы данных. Корректная конфигурация трансформаций помогает точно контролировать процесс подготовки данных и добиться желаемого поведения модели.
Надеюсь, это руководство поможет вам лучше понять и управлять трансформациями данных, применяемыми PyTorch, включая тонкости использования DataLoader и работы с набором данных MNIST.