【问题标题】:Custom dataset and dataloader自定义数据集和数据加载器
【发布时间】:2021-01-27 23:57:10
【问题描述】:

我是 pytorch 的新手。 我有一个大数据集,由两个 txt 文件组成,一个用于数据,另一个用于目标数据。 在训练文件中每行是长度为 340 的列表,在目标中每行是长度为 136 的列表。

我想问一下如何定义我的数据集,以便我可以使用 Dataloader 加载我的数据来训练 pytorch 模型?

我给你答案

【问题讨论】:

  • 欢迎来到 Stack Overflow,请展示您到目前为止尝试过的内容。
  • 尝试编写一些代码。当您遇到困难时,将代码粘贴到此处,堆栈溢出成员会有所帮助。
  • 去pytorch网站有关于自定义数据集的教程。

标签: dataframe computer-vision pytorch dataloader


【解决方案1】:

Dataset from torch.utils.data 是表示数据集的抽象类。您的自定义数据集应继承 Dataset 并覆盖以下方法:

__len__() 以便 len(dataset) 返回数据集的大小。
__getitem__() 支持索引,以便可以使用 dataset[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

这将是您案例的基础,但必须根据您的案例进行一些更改。

注意:您必须根据数据集进行必要的更改

【讨论】:

  • 效果很好,非常感谢@Prajoy Kuvalekar
  • 您能否将其标记为正确答案并投票@No Na
猜你喜欢
  • 1970-01-01
  • 2019-11-08
  • 2020-09-03
  • 1970-01-01
  • 2021-11-09
  • 1970-01-01
  • 1970-01-01
  • 2020-06-03
  • 1970-01-01
相关资源
最近更新 更多