Onnxモデルで自分のディレクトリ情報を入れないようにする方法【PyTorch】

2022-10-21
2022-10-27

Placeholder
PyTorch
onnx

PyTorchを使って、PyTorchで作成したモデルファイルをtorch.onnx.export()を使用してonnx形式に変換していました。 変換した後に、そのonnxファイルをnetronで中のネットワーク構造を見ていると、レイヤーのnode propertiesdescription部分に、自分のディレクトリー情報がに入っているのを見つけました。
PyTorchのバージョンは1.12.1を使っていました。

ss-netron-verbose-true

自分のディレクトリー情報が入るのは嫌な感じなので、入らない方法を調べました。

調べた結果、ドキュメントに書いてありました。
torch.onnx.export()の引数でverbose=Trueにしていたことで 自分のディレクトリ情報がonnxファイルに記入されていました。 引数でverbose=Falseに設定することで自分のディレクトリ情報が記入されなくなりました。

# 自分のディレクトリ情報がmodel.onnxに記入される
torch.onnx.export(model, dummy_input, "model.onnx", verbose=True)

# 記入されない
torch.onnx.export(model, dummy_input, "model.onnx", verbose=False)

実際に下側のverbose=Falseの設定でonnxに変換したものをnetronで見てみると、 下の画像のようになっていてdescriptionが消えていてディレクトリの情報などがなくなりました。

ss-netron-onnx-verbose-false

verboseの機能を勘違いしていたようです。 verbose=Trueにすれば、下のように実行したときに人間がわかりやすい形式で構造を 表示をしてくれるのだとばかり思っていました。

実際ドキュメントを見てみると下のように書かれていて、特に In addition, the final ONNX graph will include the field doc_string from the exported model which mentions the source code locations for model.` とあり、人間の読みやすい形式で出力されるのに加えて、出力されるモデルにモデルのソースコードの場所が含まれると書かれていました。

verbose (bool, default False) – if True, prints a description of the model being exported to stdout. In addition, the final ONNX graph will include the field doc_string` from the exported model which mentions the source code locations for model. If True, ONNX exporter logging will be turned on.

ドキュメントはしっかり読まないとダメですね。