Как разместить пользовательские данные в Pytorch DataLoader? - PullRequest
1 голос
/ 08 января 2020

Я предварительно обработал и нормализовал свои данные и разделил их на тренировочный набор и тестовый набор. У меня есть следующие размеры для моих x_train и y_train: Форма X_Train: (708, 256, 3) Форма Y_Train: (708, 4)

Как вы можете видеть, x_train - 3-D. Как я могу go ввести его в загрузчик данных pytorch? Что мне поставить для блока классов?

class training_set(Dataset):
    def __init__(self,X,Y):

    def __len__(self):
        return 

    def __getitem__(self, idx):
        return 

training_set = torch.utils.data.TensorDataset(x_train, y_train)
train_loader = torch.utils.data.DataLoader(training_set, batch_size=50, shuffle=True)

1 Ответ

1 голос
/ 08 января 2020
x_train, y_train = torch.rand((708, 256, 3)), torch.rand((708, 4))  # data

class training_set(data.Dataset):
    def __init__(self,X,Y):
        self.X = X                           # set data
        self.Y = Y                           # set lables

    def __len__(self):
        return len(self.X)                   # return length

    def __getitem__(self, idx):
        return [self.X[idx], self.Y[idx]]    # return list of batch data [data, labels]
training_dataset = training_set(x_train, y_train)
train_loader = torch.utils.data.DataLoader(training_dataset, batch_size=50, shuffle=True)

На самом деле вам не нужно использовать пользовательский набор данных, потому что в вашем случае это простой набор данных. Сначала вы можете изменить на TensorDataset, чтобы использовать

training_dataset = torch.utils.data.TensorDataset(x_train, y_train)
train_loader = torch.utils.data.DataLoader(training_dataset, batch_size=50, shuffle=True)

, чтобы оба возвращали одинаковые результаты.

...