【发布时间】:2022-01-01 19:52:11
【问题描述】:
我正在尝试编写一个自定义的 Torch 数据加载器,以便可以增量加载大型 CSV 文件(按块)。
我对如何做到这一点有一个粗略的想法。但是,我不断收到一些我不知道如何解决的 PyTorch 错误。
import numpy as np
import pandas as pd
import torch
from torch.utils.data import Dataset, DataLoader
# Create dummy csv data
nb_samples = 110
a = np.arange(nb_samples)
df = pd.DataFrame(a, columns=['data'])
df.to_csv('data.csv', index=False)
# Create Dataset
class CSVDataset(Dataset):
def __init__(self, path, chunksize, nb_samples):
self.path = path
self.chunksize = chunksize
self.len = nb_samples / self.chunksize
def __getitem__(self, index):
x = next(
pd.read_csv(
self.path,
skiprows=index * self.chunksize + 1, #+1, since we skip the header
chunksize=self.chunksize,
names=['data']))
x = torch.from_numpy(x.data.values)
return x
def __len__(self):
return self.len
dataset = CSVDataset('data.csv', chunksize=10, nb_samples=nb_samples)
loader = DataLoader(dataset, batch_size=10, num_workers=1, shuffle=False)
for batch_idx, data in enumerate(loader):
print('batch: {}\tdata: {}'.format(batch_idx, data))
我收到'float' object cannot be interpreted as an integer 错误
【问题讨论】:
标签: pytorch dataloader