Как создать мини-пакеты для данных без изображения в PyTorch? - PullRequest
0 голосов
/ 16 апреля 2019

Я хочу загрузить свои данные обучения и тестирования

import torch
from torchvision import datasets, transforms

transform = transforms.Compose([transforms.ToTensor(),
                                transforms.Normalize((0.5, ), (0.5, ))])

trainset = datasets.FashionMNIST('~/.pytorch/F_MNIST_data/', download=True, train=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True)


testset = datasets.FashionMNIST('~/.pytorch/F_MNIST_data/', download=True, train=False, transform=transform)
testloader = torch.utils.data.DataLoader(testset, batch_size=64, shuffle=True)

Я вижу реализацию для данных изображения, есть ли способ загрузить данные без изображения подобным образом?

1 Ответ

0 голосов
/ 16 апреля 2019

Мы можем использовать для этого модуль torch.utils.data, выполнив следующие шаги:

  1. Создание класса набора данных для загрузки пользовательских данных путем наследования torch.utils.data.Dataset

  2. Создание объекта набора данных путем передачи данных в экземпляр пользовательского класса набора данных

  3. Используйте torch.utils.data.DataLoader для загрузки набора данных и получения пакетов

при условии, что вы загрузили данные из каталога, в обучающие и тестовые массивы numpy, вы можете наследовать от torch.utils.data.Dataset класса, чтобы создать объект набора данных

class MyDataset(Dataset):
    def __init__(self, x, y):
        super(MyDataset, self).__init__()
        assert x.shape[0] == y.shape[0] # assuming shape[0] = dataset size
        self.x = x
        self.y = y


    def __len__(self):
        return self.y.shape[0]

    def __getitem__(self, index):
        return self.x[index], self.y[index]

Затем создайте свой объект набора данных

traindata = MyDataset(train_x, train_y)

Наконец, используйте DataLoader для создания мини-пакетов

trainloader = torch.utils.data.DataLoader(traindata, batch_size=64, shuffle=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...