モデルクラスコードにアクセスせずにPyTorchモデルを保存する

マイケルD

モデルクラスをどこかに定義しなくても、PyTorchモデルを保存するにはどうすればよいですか?


免責事項

ベストな方法PyTorchで訓練されたモデルを保存するには?モデルクラスコードにアクセスせずにモデルを保存するためソリューション(または実用的なソリューション)はありません

nlml

利用可能なPytorchライブラリ(つまり、Python、C ++、またはサポートされている他のプラットフォームのPytorch)を使用して推論を行う場合は、TorchScriptを使用するのが最善の方法です

最も簡単なのはtrace = torch.jit.trace(model, typical_input)、それからを使用することだと思いますtorch.jit.save(trace, path)次に、トレースされたモデルをでロードできますtorch.jit.load(path)

これは本当に簡単な例です。2つのファイルを作成します。

train.py

import torch

class Model(torch.nn.Module):
    def __init__(self):
        super(Model, self).__init__()
        self.linear = torch.nn.Linear(4, 4)

    def forward(self, x):
        x = torch.relu(self.linear(x))
        return x

model = Model()
x = torch.FloatTensor([[0.2, 0.3, 0.2, 0.7], [0.4, 0.2, 0.8, 0.9]])
with torch.no_grad():
    print(model(x))
    traced_cell = torch.jit.trace(model, (x))
torch.jit.save(traced_cell, "model.pth")

infer.py

import torch
x = torch.FloatTensor([[0.2, 0.3, 0.2, 0.7], [0.4, 0.2, 0.8, 0.9]])
loaded_trace = torch.jit.load("model.pth")
with torch.no_grad():
    print(loaded_trace(x))

これらを順番に実行すると、次の結果が得られます。

python train.py
tensor([[0.0000, 0.1845, 0.2910, 0.2497],
        [0.0000, 0.5272, 0.3481, 0.1743]])

python infer.py
tensor([[0.0000, 0.1845, 0.2910, 0.2497],
        [0.0000, 0.5272, 0.3481, 0.1743]])

結果は同じなので、良いです。(nn.Linearレイヤーの初期化がランダムであるため、ここでは毎回結果が異なることに注意してください)。

TorchScriptは、推論時にグラフを再定義する必要なしに、はるかに複雑なアーキテクチャとグラフ定義(ifステートメント、whileループなどを含む)を単一のファイルに保存できるようにします。より高度な可能性については、ドキュメント(上記のリンク)を参照してください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

暗号化せずにAppleNSKeyedArchiverクラスを使用して、スコアデータをローカルに保存する

分類Dev

コントローラクラスLaravelからモデルメソッドにアクセスする

分類Dev

gensimラッパーでモデルにアクセスする

分類Dev

コントローラからモデルにアクセスする方法は?

分類Dev

コントローラからモデルにアクセスする方法は?

分類Dev

Django:別のモデルを介してモデルのフィールドにアクセスする

分類Dev

Googleクラウドストレージにモデル履歴を保存する

分類Dev

Python SQLalchemyは、モデルを作成せずに巨大なDBデータにアクセスします

分類Dev

アクセススコープモデルモデルを取得する方法

分類Dev

Djangoモデルのスーパークラスにアクセスする

分類Dev

モデルをロードせずにRailsモデルを参照するユニットテストコード

分類Dev

laravel5.2-コントローラーメソッドでモデルにアクセスする

分類Dev

すべてのモデルの検証を使用せずにモデルでクラスを再利用する方法

分類Dev

ビューモデルクラスのタブコントロールにアクセスする

分類Dev

コントローラからモデルメソッドにアクセスする

分類Dev

コントローラーはチャイルドモデルの投稿にアクセスできません

分類Dev

コアデータモデルサブクラスにメソッドを追加する方法

分類Dev

Django-モデルから別のモデルに特定のフィールドにアクセスする

分類Dev

モデルクラスのクラス変数にアクセスする方法

分類Dev

Laravel-一般的なモデル関数をどこに保存し、コントローラーからそれらにアクセスする方法は?

分類Dev

アクティブレコードモデルにアクセスするときにスタックが深すぎるエラー

分類Dev

コントローラからモデルクラスにアクセスする方法は?

分類Dev

モデル データ/メソッドにアクセスできるようにするスクラッチ ファイルを配置する場所

分類Dev

モデルクラスをMVCでLocalStorageに保存する方法は?

分類Dev

モデルメソッドにアクセスする方法は?

分類Dev

フラスコを使用してデバッグモードでのみルートにアクセスできるようにする

分類Dev

Ember コントローラーでモデル データにアクセスする方法

分類Dev

pytorch分類モデルの予測にアクセスする方法は?(BERT)

分類Dev

Django、モデルフィールドを介してモデル内のモデルにアクセスする方法

Related 関連記事

  1. 1

    暗号化せずにAppleNSKeyedArchiverクラスを使用して、スコアデータをローカルに保存する

  2. 2

    コントローラクラスLaravelからモデルメソッドにアクセスする

  3. 3

    gensimラッパーでモデルにアクセスする

  4. 4

    コントローラからモデルにアクセスする方法は?

  5. 5

    コントローラからモデルにアクセスする方法は?

  6. 6

    Django:別のモデルを介してモデルのフィールドにアクセスする

  7. 7

    Googleクラウドストレージにモデル履歴を保存する

  8. 8

    Python SQLalchemyは、モデルを作成せずに巨大なDBデータにアクセスします

  9. 9

    アクセススコープモデルモデルを取得する方法

  10. 10

    Djangoモデルのスーパークラスにアクセスする

  11. 11

    モデルをロードせずにRailsモデルを参照するユニットテストコード

  12. 12

    laravel5.2-コントローラーメソッドでモデルにアクセスする

  13. 13

    すべてのモデルの検証を使用せずにモデルでクラスを再利用する方法

  14. 14

    ビューモデルクラスのタブコントロールにアクセスする

  15. 15

    コントローラからモデルメソッドにアクセスする

  16. 16

    コントローラーはチャイルドモデルの投稿にアクセスできません

  17. 17

    コアデータモデルサブクラスにメソッドを追加する方法

  18. 18

    Django-モデルから別のモデルに特定のフィールドにアクセスする

  19. 19

    モデルクラスのクラス変数にアクセスする方法

  20. 20

    Laravel-一般的なモデル関数をどこに保存し、コントローラーからそれらにアクセスする方法は?

  21. 21

    アクティブレコードモデルにアクセスするときにスタックが深すぎるエラー

  22. 22

    コントローラからモデルクラスにアクセスする方法は?

  23. 23

    モデル データ/メソッドにアクセスできるようにするスクラッチ ファイルを配置する場所

  24. 24

    モデルクラスをMVCでLocalStorageに保存する方法は?

  25. 25

    モデルメソッドにアクセスする方法は?

  26. 26

    フラスコを使用してデバッグモードでのみルートにアクセスできるようにする

  27. 27

    Ember コントローラーでモデル データにアクセスする方法

  28. 28

    pytorch分類モデルの予測にアクセスする方法は?(BERT)

  29. 29

    Django、モデルフィールドを介してモデル内のモデルにアクセスする方法

ホットタグ

アーカイブ