Как открыть предварительно подготовленные модели в python

#python-3.x #pytorch #spss #pre-trained-model

#python-3.x #pytorch #spss #предварительно обученная модель

Вопрос:

Привет, я пытаюсь загрузить некоторые предварительно подготовленные модели из .sav файлов, и пока ничего не работает. Модели изначально были созданы в pytorch, и когда я открываю raw-файл в vs-code, я вижу, что вся соответствующая информация была сохранена правильно.

Я пробовал следующие библиотеки:

sklearn.externals.joblib

pickle

scipy.io

pyreadstat

Каждая библиотека либо выдавала мне ошибку (например, wrong timestamp или signature mismatch ), либо просто возвращала int вместо объекта python.

Модели можно загрузить по этой ссылке.

Комментарии:

1. если файлы были сохранены с помощью torch.save , то вам следует попробовать torch.load загрузить их

2. @CertainlyNotAdrian Я думаю, что ответил на ваш вопрос и даже протестировал решение. Вы не возражаете отметить мой ответ принятым? Если нет, то, пожалуйста, укажите в комментарии, где, по вашему мнению, не хватает моего ответа, чтобы я мог обратиться к нему.

Ответ №1:

Вам нужно использовать PyTorch для загрузки моделей. Кроме того, вам также необходимо исходное определение модели, поэтому вам нужно клонировать репозиторий авторов. В вашем примере это репозиторий:

 git clone https://github.com/tbepler/protein-sequence-embedding-iclr2019.git
  

Затем вы можете открыть модель с помощью torch.load() . Обратите внимание, что вам нужно определение модели в вашем path (вы можете просто запустить python из каталога repo).

Затем просто открыть файл:

 import torch
model = torch.load('<downloaded models>/<model name>.sav')
print(model)
  

В последней строке выводится определение модели. Например, me_L1_100d_lstm3x512_lm_i512_mb64_tau0.5_p0.05_epoch100.sav выдал следующий вывод:

 OrdinalRegression(
  (embedding): StackedRNN(
    (embed): LMEmbed(
      (lm): BiLM(
        (embed): Embedding(22, 21, padding_idx=21)
        (dropout): Dropout(p=0)
        (rnn): ModuleList(
          (0): LSTM(21, 1024, batch_first=True)
          (1): LSTM(1024, 1024, batch_first=True)
        )
        (linear): Linear(in_features=1024, out_features=21, bias=True)
      )
      (embed): Embedding(21, 512, padding_idx=20)
      (proj): Linear(in_features=4096, out_features=512, bias=True)
      (transform): ReLU()
    )
    (dropout): Dropout(p=0)
    (rnn): LSTM(512, 512, num_layers=3, batch_first=True, bidirectional=True)
    (proj): Linear(in_features=1024, out_features=100, bias=True)
  )
  (compare): L1()
)