pytorchをonnx形式に変換し、モデルのparamsメソッドとGFLOPsメソッドを読み込みます

  pytorchをonnx形式に変換します。

  def Torch2Onnx(model、input_size、output_name、istrained = True):

  '' '

  :param:モデル

  :param:input_size .et(244,244)

  :param:output_name .et "test_output"

  :param:トレーニング済みモデルを変換するかどうか。デフォルト:True

  '' '

  x = Variable(torch.randn(1,3、input_size [0]、input_size [1]))。cuda()

  訓練されている場合:

  torch_out = torch.onnx.export(model、x、output_name、verbose = True)

  そうしないと:

  torch_out = torch.onnx.export(model、x、output_name、export_params = False、verbose = True)#トレーニングされていないモデルのみをエクスポートします。

  使用例:

  モデル=モデル()

  model.load_state_dict(torch.load(weight_path))

  device = torch.device( "cuda" if torch.cuda.is_available()else "cpu")

  モデル= model.to(デバイス)

  input_size =(384,288)

  Torch2Onnx(model、input_size、 "test.onnx")

  モデルのパラメータを取得します。

  注意:異なるメソッドのデフォルトモデルは、CPUまたはcudaで異なります。RuntimeErrorと同様のエラーがある場合:入力タイプ(torch.FloatTensor)と重みタイプ(torch.cuda.FloatTensor)は同じである必要があります。重量がcudaにあるべきかどうかを確認してください。

  方法1:トーチサマリーを使用する

  pipを使用してtorchsummaryをインストールします。

  pipインストールトーチサマリー

  コードセグメント:

  torchsummaryからインポートの概要

  モデル=モデル()

  model.load_state_dict(torch.load(weight_path))

  device = torch.device( "cuda" if torch.cuda.is_available()else "cpu")

  モデル= model.to(デバイス)

  要約(モデル、(3,384,288))

  大連女性病院https://m.120ask.com/zhenshi/dlfk/でどちらが良いですか

トーチスタットの結果は


  方法2:トーチスタットを使用する

  pipを使用してtorchstatをインストールします。

  pip install torchstat

  コードスニペット(要約と同様)

  torchsummaryからインポートの概要

  モデル=モデル()

  model.load_state_dict(torch.load(weight_path))

  device = torch.device( "cuda" if torch.cuda.is_available()else "cpu")

  状態(モデル、(3,384,288))

  

トーチサマリーの結果は


  方法3:thopを使用する(非推奨)

  pipを使用してthopをインストールします。

  pip install thop

  コードセグメント:

  thopインポートプロファイルから、clever_format

  モデル=モデル()

  model.load_state_dict(torch.load(weight_path))

  device = torch.device( "cuda" if torch.cuda.is_available()else "cpu")

  フロップ、params = profile(model、inputs =())

  flops、params = clever_format(flops、params、 "%。3f")

おすすめ

転載: blog.51cto.com/14503791/2656252