Я работаю с набором данных MNIST из Chagange Chagange и у меня проблемы с предварительной обработкой данных. Кроме того, я не знаю, каковы лучшие практики, и мне было интересно, не могли бы вы посоветовать мне это.
Отказ от ответственности: я не могу просто использовать torchvision.datasets.mnist, потому что мне нужно использовать данные Kaggle для обучение и сдача.
В этом учебном пособии было рекомендовано создать объект Dataset, загружающий из файлов тензоры .pt, чтобы полностью использовать графический процессор. Для этого мне нужно было загрузить данные CSV, предоставленные Kaggle, и сохранить их в виде файлов .pt:
import pandas as pd
import torch
import numpy as np
# import data
digits_train = pd.read_csv('data/train.csv')
train_tensor = torch.tensor(digits_train.drop(label, axis=1).to_numpy(), dtype=torch.int)
labels_tensor = torch.tensor(digits_train[label].to_numpy())
for i in range(train_tensor.shape[0]):
torch.save(train_tensor[i], "data/train-" + str(i) + ".pt")
Каждый train_tensor[i].shape
равен torch.Size([1, 784])
Однако каждый такой файл .pt имеет размер около 130 МБ. Тензор того же размера со случайно сгенерированными целыми числами имеет размер 6,6 КБ. Почему эти тензоры такие огромные, и как я могу уменьшить их размер?
Набор данных составляет 42 000 выборок. Должен ли я вообще беспокоиться о пакетировании этих данных? Должен ли я заняться сохранением тензоров в отдельные файлы, а не загружать их все в ОЗУ, а затем разделять на части? Какой здесь самый оптимальный подход?