DataLoader Class 错误 Pytorch
DataLoader Class Errors Pytorch
我是 pytorch 初学者,正在尝试使用数据加载器。
实际上,我正在尝试将此实现到我的网络中,但加载需要很长时间。因此,我调试了我的网络以查看网络本身是否有问题,但事实证明它与我的数据加载器class有关。这是代码:
from torch.utils.data import Dataset, DataLoader
import numpy as np
import pandas as pd
class DiabetesDataset(Dataset):
def __init__(self, csv):
self.xy = pd.read_csv(csv)
def __len__(self):
return len(self.xy)
def __getitem__(self, index):
self.x_data = torch.Tensor(xy.iloc[:, 0:-1].values)
self.y_data = torch.Tensor(xy.iloc[:, [-1]].values)
return self.x_data[index], self.y_data[index]
dataset = DiabetesDataset("trial.csv")
train_loader = DataLoader(dataset=dataset,
batch_size=1,
shuffle=True,
num_workers=2)`
for a in train_loader:
print(a)
为了验证数据加载器是否导致所有延迟,我创建了一个虚拟 csv 文件,其中包含 2 列 1s 和 2s,每列总共有 10 个样本。然后,我循环了train_loader这个对象,已经1个多小时了,还是运行,考虑到样本量小,batch size设置为1。
我不确定我的代码错误是什么导致了这个问题。
任何 comments/inputs 不胜感激!
你的代码中有一些错误 - 你能检查一下这是否有效吗(它在我的电脑上用你的玩具示例工作):
from torch.utils.data import Dataset, DataLoader
import numpy as np
import pandas as pd
import torch
class DiabetesDataset(Dataset):
def __init__(self, csv):
self.xy = pd.read_csv(csv)
def __len__(self):
return len(self.xy)
def __getitem__(self, index):
x_data = torch.Tensor(self.xy.iloc[:, 0:-1].values)
y_data = torch.Tensor(self.xy.iloc[:, [-1]].values)
return x_data[index], y_data[index]
dataset = DiabetesDataset("trial.csv")
train_loader = DataLoader(
dataset=dataset,
batch_size=1,
shuffle=True,
num_workers=2)
if __name__ == '__main__':
for a in train_loader:
print(a)
编辑:您的代码无法正常工作,因为您在 __getitem__
方法中缺少 self
(self.xy.iloc...)并且因为您的脚本末尾没有 if __name__ == '__main__
。对于第二个错误,请参阅 RuntimeError on windows trying python multiprocessing
我是 pytorch 初学者,正在尝试使用数据加载器。
实际上,我正在尝试将此实现到我的网络中,但加载需要很长时间。因此,我调试了我的网络以查看网络本身是否有问题,但事实证明它与我的数据加载器class有关。这是代码:
from torch.utils.data import Dataset, DataLoader
import numpy as np
import pandas as pd
class DiabetesDataset(Dataset):
def __init__(self, csv):
self.xy = pd.read_csv(csv)
def __len__(self):
return len(self.xy)
def __getitem__(self, index):
self.x_data = torch.Tensor(xy.iloc[:, 0:-1].values)
self.y_data = torch.Tensor(xy.iloc[:, [-1]].values)
return self.x_data[index], self.y_data[index]
dataset = DiabetesDataset("trial.csv")
train_loader = DataLoader(dataset=dataset,
batch_size=1,
shuffle=True,
num_workers=2)`
for a in train_loader:
print(a)
为了验证数据加载器是否导致所有延迟,我创建了一个虚拟 csv 文件,其中包含 2 列 1s 和 2s,每列总共有 10 个样本。然后,我循环了train_loader这个对象,已经1个多小时了,还是运行,考虑到样本量小,batch size设置为1。
我不确定我的代码错误是什么导致了这个问题。
任何 comments/inputs 不胜感激!
你的代码中有一些错误 - 你能检查一下这是否有效吗(它在我的电脑上用你的玩具示例工作):
from torch.utils.data import Dataset, DataLoader
import numpy as np
import pandas as pd
import torch
class DiabetesDataset(Dataset):
def __init__(self, csv):
self.xy = pd.read_csv(csv)
def __len__(self):
return len(self.xy)
def __getitem__(self, index):
x_data = torch.Tensor(self.xy.iloc[:, 0:-1].values)
y_data = torch.Tensor(self.xy.iloc[:, [-1]].values)
return x_data[index], y_data[index]
dataset = DiabetesDataset("trial.csv")
train_loader = DataLoader(
dataset=dataset,
batch_size=1,
shuffle=True,
num_workers=2)
if __name__ == '__main__':
for a in train_loader:
print(a)
编辑:您的代码无法正常工作,因为您在 __getitem__
方法中缺少 self
(self.xy.iloc...)并且因为您的脚本末尾没有 if __name__ == '__main__
。对于第二个错误,请参阅 RuntimeError on windows trying python multiprocessing