【发布时间】:2019-05-23 12:38:28
【问题描述】:
通常,当我们在pytorch中加载数据时,我们会执行以下操作
for x, y in dataloaders:
# Do something
但是,在这个名为 MusicNet 的数据集中,他们像这样声明自己的数据集和数据加载器
train_set = musicnet.MusicNet(root=root, train=True, download=True, window=window)#, pitch_shift=5, jitter=.1)
test_set = musicnet.MusicNet(root=root, train=False, window=window, epoch_size=50000)
train_loader = torch.utils.data.DataLoader(dataset=train_set,batch_size=batch_size,**kwargs)
test_loader = torch.utils.data.DataLoader(dataset=test_set,batch_size=batch_size,**kwargs)
然后他们像这样加载数据
with train_set, test_set:
for i, (x, y) in enumerate(train_loader):
# Do something
问题 1
我不明白为什么没有with train_set, test_set 这一行代码就不能工作。
问题 2
另外,我如何访问数据?
我试过了
train_set.access(2560,0)
和
with train_set, test_set:
x, y = train_set.access(2560,0)
他们要么给我一条错误消息,例如
KeyError Traceback(最近一次调用最后一次)在 ----> 1 train_set.access(2560,0)
/workspace/raven_data/AMT/MusicNet/pytorch_musicnet/musicnet.py 访问(self,rec_id,s,shift,jitter)106 107 if self.mmap: --> 108 x = np.frombuffer(self.records[rec_id][0][ssz_float:int(s+scaleself.window)*sz_float], dtype=np.float32).copy() 109 else: 110 fid,_ = self.records[rec_id]
密钥错误:2560
或者给我一个空的x和y
【问题讨论】:
标签: python python-3.x pytorch