h5py случайно не может открыть объект (компонент не найден) - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь загрузить наборы данных hdf5 в цикл обучения pytorch.

Независимо от числа num_workers в загрузчике данных, это случайным образом выдает «KeyError:« Невозможно открыть объект (компонент ненайдено) '"(обратная связь ниже).

Я могу запустить тренировочный цикл, но не могу пройти 1/4 одной эпохи без этой ошибки, которая происходит для случайных наборов данных (которые2 Дарри каждый).Я могу отдельно загрузить эти массивы в консоль, используя обычный f['group/subroup'][()], чтобы он не выглядел как поврежденный hdf-файл или что-то не так с наборами данных / массивом.

У меня естьпопытался:

  • настроить num_workers согласно различным другим проблемам, которые были у людей с pytorch - все еще происходит с 0 num_workers.
  • обновление / понижение версии, torch, numpy и python.
  • с использованием f.close () в конце загрузчика данных getitem
  • с использованием новой среды conda и установки зависимостей.
  • сначала вызывая родительские группы, затем инициализируя массив, например: X = f[ID] затем X = X[()]
  • с использованием двойной косой черты в пути hdf

Поскольку это повторяется с num_workers =0, я думаю, что это не проблема многопоточности, хотя трассировка, похоже, указывает на строки из / torch / utils / data / dataloader, которые готовят следующий пакет.

Я просто не могу понять, почему h5py не может случайно увидеть отдельный набор данных.

Идентификаторы - это строки, соответствующие путям hdf, например: ID = "ID_12345//Ep_-1//AN_67891011//ABC"

выдержка из загрузчика данных:

def __getitem__(self, index):

    ID = self.list_IDs[index]

    # Start hdf file in read mode:
    f = h5py.File(self.hdf_file, 'r', libver='latest', swmr=True)

    X = f[ID][()]

    X = X[:, :, np.newaxis] # torchvision 0.2.1 needs (H x W x C) for transforms

    y = self.y_list[index]

    if self.transform:
        X = self.transform(X)

    return ID, X, y

`

Ожидается: обучение для цикла

Факт: Идентификаторы / наборы данных / примеры сначала загружаются нормально, а затем через 20-200 шагов ...

Трассировка (последний последний вызов):

Файл "Documents / BSSA-loc / mamdl / models / main_v3.py", строка 287, в main () Файл "Documents / BSSA-loc / mamdl / models / main_v3.py", строка 203, в main для i, (Идентификаторы, изображения, метки) в перечислении (train_loader): Файл "/home/james/anaconda3/envs/jc/lib/python3.7/site-packages/torch/utils/data/dataloader.py", строка 615, в следующий batch = self.collate_fn ([self.dataset [i] для i в индексах]) Файл "/home/james/anaconda3/envs/jc/lib/python3.7/site-packages/torch/utils/data/dataloader.py ", строка 615, в пакете = self.collate_fn ([self.dataset [i] для i в индексах]) Файл" / home / james / Documents / BSSA-loc / mamdl / src /data_loading / Data_loader_v3.py ", строка 59, в getitem X = f [ID] [()] Файл "h5py / _objects.pyx", строка 54, в файле h5py._objects.with_phil.wrapper. Файл "h5py / _objects.pyx", строка 55, в файле h5py._objects.with_phil.wrapper.Файл "/home/james/anaconda3/envs/jc/lib/python3.7/site-packages/h5py/_hl/group.py", строка 262, в getitem oid = h5o.open (self.id, self._e (name), lapl = self._lapl) Файл "h5py / _objects.pyx", строка 54, в h5py._objects.with_phil.wrapper
Файл "h5py / _objects.pyx", строка 55, в файле h5py._objects.with_phil.wrapper "h5py / h5o.pyx", строка 190, в файле h5py.h5o.open

KeyError: 'Невозможно открыть объект (компонент не найден)'

1 Ответ

0 голосов
/ 03 мая 2019

Кстати, мое лучшее предположение заключается в том, что это связано с ошибкой в ​​моем коде для построения hdf, которая была остановлена ​​и запущена несколько раз в режиме добавления. Некоторые наборы данных выглядели так, как будто они были завершены при запросе f['group/subroup'][()], но не смогли загрузить загрузчик данных pytorch.

У меня не было этой проблемы с момента восстановления hdf по-другому.

...