Итак, это минимальный код, который иллюстрирует проблему:
Это набор данных:
class IceShipDataset(Dataset):
BAND1='band_1'
BAND2='band_2'
IMAGE='image'
@staticmethod
def get_band_img(sample,band):
pic_size=75
img=np.array(sample[band])
img.resize(pic_size,pic_size)
return img
def __init__(self,data,transform=None):
self.data=data
self.transform=transform
def __len__(self):
return len(self.data)
def __getitem__(self, idx):
sample=self.data[idx]
band1_img=IceShipDataset.get_band_img(sample,self.BAND1)
band2_img=IceShipDataset.get_band_img(sample,self.BAND2)
img=np.stack([band1_img,band2_img],2)
sample[self.IMAGE]=img
if self.transform is not None:
sample=self.transform(sample)
return sample
И это не сбой кода:
PLAY_BATCH_SIZE=4
#load data. There are 1604 examples.
with open('train.json','r') as f:
data=f.read()
data=json.loads(data)
ds=IceShipDataset(data)
playloader = torch.utils.data.DataLoader(ds, batch_size=PLAY_BATCH_SIZE,
shuffle=False, num_workers=4)
for i,data in enumerate(playloader):
print(i)
Это дает ту странную ошибку открытых файлов в цикле for... Моя версия факела 0.3.0.post4
Если вы хотите json файл, он доступен в Kaggle (https://www.kaggle.com/c/statoil-iceberg-classifier-challenge)
Я должен упомянуть, что ошибка не имеет ничего общего с состоянием моего ноутбука:
[email protected]:~$ lsof | wc -l
89114
[email protected]:~$ cat /proc/sys/fs/file-max
791958
Что я здесь делаю неправильно?