Как преобразовать модель из Lua в TensorFlow / Keras и скормить предварительно обученные веса - PullRequest
0 голосов
/ 22 июня 2019

У меня есть файл .t7, в котором сохранены сетевая архитектура и предварительно обученные веса.Поскольку модель была обучена на Lua и требовала nn и cudnn (которую я не могу установить, потому что у меня нет графических процессоров NVIDIA), я пытаюсь все конвертировать в Keras / TensorFlow.

После прочтенияу меня есть файл torchfile.TorchObject, который в моем случае представляет собой объект типа nn.Sequential torch, а все слои - nn.layer или cudnn.layer.

Предполагается, что я загрузил файл .t7 впеременная с именем readFile: readFile. dir () возвращает

[b'_type', b'output', b'gradInput', b'modules', b'train', 'torch_typename']

(b должен быть из пакета torchfile, он ни на что не влияет.)

readFiles.modules - это список TorchObjects, и у каждого есть некоторые атрибуты, такие как:

[b'padW',
 b'pad',
 b'nInputPlane',
 b'output',
 b'gradInput',
 b'iSize',
 b'fgradInput',
 b'_type',
 b'gradBias',
 b'bias',
 b'output_slice',
 b'stride',
 b'benchmarked',
 b'dH',
 b'dW',
 b'output_offset',
 b'padH',
 b'kH',
 b'weight_offset',
 b'finput',
 b'input_slice',
 b'input_offset',
 b'weight',
 b'train',
 b'gradWeight',
 b'groups',
 b'kW',
 b'nOutputPlane',
 b'autotunerHash',
 'torch_typename'] 

torch.load () у меня не работает, поэтому из пакета torchfile я использовал torchfile.load (), которыйчитает файл .t7 в объект TorchObject, который я могу запросить печать в блокноте Python.

print(readFile.torch_typename())
for node in step1.modules:
    print("  "+str(node.torch_typename()))
    if(type(node.modules) == list):
        for node2 in node.modules:
            print("    "+str(node2.torch_typename()))
            if(type(node2.modules) == list):
                for node3 in node2.modules:
                    print("      "+str(node3.torch_typename()))

Структура напечатанной сети: (некоторые слои пропущены с '...')

b'nn.Sequential'
  b'cudnn.SpatialConvolution'
  b'cudnn.SpatialBatchNormalization'
  b'cudnn.ReLU'
  b'cudnn.SpatialMaxPooling'
  b'nn.Sequential'
    b'nn.Sequential'
      b'nn.ConcatTable'
      b'nn.CAddTable'
      b'cudnn.ReLU'
    ...
  b'cudnn.SpatialFullConvolution'
  b'cudnn.SpatialBatchNormalization'
  b'cudnn.ReLU'
  ...

Как я могу кормить все предварительно обученные веса (как Numpyмассивов) в слои TensorFlow / Keras, со всеми этими спецификациями атрибутов?Как я могу воссоздать ту же структуру?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...