【问题标题】:How to open pretrained models in python如何在 python 中打开预训练模型
【发布时间】:2019-03-19 21:38:22
【问题描述】:

您好,我正在尝试从 .sav 文件中加载一些预训练模型,但到目前为止没有任何效果。这些模型最初是在 pytorch 中制作的,当我在 vs-code 中打开原始文件时,我可以看到所有适当的信息都已正确存储。

我尝试了以下库:

sklearn.externals.joblib

pickle

scipy.io

pyreadstat

每个库要么给我一个错误(例如wrong timestampsignature mismatch),要么只返回一个int 而不是python 对象。

模型可以从this link下载。

【问题讨论】:

  • 如果文件是使用torch.save 保存的,那么您应该尝试torch.load 来加载它们
  • @CertainlyNotAdrian 我想我回答了你的问题,甚至测试了解决方案。您介意将我的答案标记为已接受吗?如果没有,请在评论中指出您认为我的答案不足的地方,以便我解决。

标签: python-3.x pytorch spss pre-trained-model


【解决方案1】:

您需要使用 PyTorch 来加载模型。除此之外,您还需要原始模型定义,因此您需要克隆作者存储库。在您的示例中,此存储库:

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

然后你可以用torch.load()打开模型。请注意,您需要路径上的模型定义(您可以简单地从 repo 目录启动 python)。

那么就直接打开文件了:

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()
)

【讨论】:

    猜你喜欢
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    • 2023-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多