Конвертировать модель факела T7 в Keras H5 - PullRequest
0 голосов
/ 13 марта 2019

Как мы можем преобразовать модель t7 в керас h5? Я пытаюсь сделать это для c3d-sports1m-kinetics.t7 , который вы можете найти здесь https://github.com/kenshohara/3D-ResNets/releases

По крайней мере, я могу попросить способ загрузить модель t7 в python (pytorch) и затем извлечь ее веса, но я не смог сделать это с помощью функции load_lua () ...

Я получаю сообщение об ошибке при попытке сделать это с помощью этой функции https://github.com/pytorch/pytorch/blob/c6529f4851bb8ac95f05d3f17dea178a0367aaee/torch/utils/serialization/read_lua_file.py

Я получаю следующую ошибку:

Traceback (most recent call last):
File "convert_t7_to_hdf5.py", line 574, in <module>
    a = load_lua("model.t7")
  File "convert_t7_to_hdf5.py", line 571, in load_lua
    return reader.read()
  File "convert_t7_to_hdf5.py", line 542, in read
    typeidx = self.read_int()
  File "convert_t7_to_hdf5.py", line 440, in read_int
    return self._read('i')
  File "convert_t7_to_hdf5.py", line 431, in _read
    result = struct.unpack(fmt, self.f.read(sz))
ValueError: read of closed file

1 Ответ

1 голос
/ 13 марта 2019

Как упоминалось в этой ссылке, https://github.com/pytorch/pytorch/issues/15307#issuecomment-448086741

с пакетом torchfile , загрузка прошла успешно.Вы можете записать содержимое модель в файл и затем понять содержимое.Информация о каждом слое хранится в виде словаря.Знание архитектуры модели облегчит анализ содержимого.

>>> import torchfile
>>> model = torchfile.load('c3d-sports1m-kinetics.t7')
>>> module = model.modules[0].modules[0]
>>> module.name
b'conv1a'
>>> module['weight'].shape
(64, 3, 3, 3, 3)
>>> module['bias'].shape
(64,)
...