Пользовательский набор данных и загрузчик данных

Я новичок в pytorch. У меня большой набор данных, состоящий из двух файлов txt, один для данных, а другой для целевых данных. В тренировочном файле каждая строка представляет собой список длиной 340, в целевом каждая строка представляет собой список из 136.

Я хотел бы спросить, как я могу определить свой набор данных, чтобы я мог использовать Dataloader для загрузки моих данных для обучения модели pytorch?

Я предлагаю вам ответы


person No Na    schedule 27.01.2021    source источник
comment
Добро пожаловать в Stack Overflow, покажите, что вы уже пробовали.   -  person Ivan    schedule 27.01.2021
comment
Попробуйте написать код. Если вы застряли, вставьте этот код сюда, и элементы переполнения стека вам помогут.   -  person Abhi25t    schedule 27.01.2021
comment
Перейдите на сайт pytorch, там есть учебник по пользовательским наборам данных.   -  person Dwight Foster    schedule 27.01.2021


Ответы (1)


Dataset из torch.utils.data - это абстрактный класс, представляющий набор данных. Ваш настраиваемый набор данных должен наследовать набор данных и переопределять следующие методы:

__len__(), чтобы len (набор данных) возвращал размер набора данных.
__getitem__() для поддержки индексации, чтобы набор данных [i] можно было использовать для получения i-го образца

Например, при написании пользовательского набора данных
я написал для вас общий пользовательский загрузчик данных в качестве постановки задачи.
здесь data.txt содержит данные, а label.txt - метки.

import torch
from torch.utils.data import Dataset

class CustomDataset(Dataset):
    def __init__(self):
        
       
        with open('data.txt', 'r') as f:
                self.data_info = f.readlines()
        
        with open('label.txt', 'r') as f:
                self.label_info = f.readlines()        


    def __getitem__(self, index):
        
        single_data = self.data_info[index].rstrip('\n')
        

        single_label = self.label_info[index].rstrip('\n')

        return ( single_data , single_label)

    def __len__(self):
        return len(self.data_info)
# Testing 
d = CustomDataset()
print(d[1]) # should output data along with label

Это будет основным для вашего случая, но вам нужно будет внести некоторые изменения, которые соответствуют вашему случаю.

Примечание: вы должны внести необходимые изменения в соответствии с вашим набором данных.

person Prajot Kuvalekar    schedule 27.01.2021
comment
Это прекрасно работает, большое спасибо @Prajoy Kuvalekar - person No Na; 29.01.2021
comment
не могли бы вы отметить это как правильный ответ и проголосовать, пожалуйста, @No Na - person Prajot Kuvalekar; 30.01.2021