エラーが出て変換ができない(泣く)
CoreMLToolsでPytorchモデルをコンバートしていると、
表題のエラーに遭遇することがある。
必要なオペレーションがCoreMLToolsに用意されていないせいで、このモデルはコンバートできないんだ。。。
解決できる
そんなふうに思いきや、実は簡単に解決できる。
表題のエラーが出たモデルは、
torch.nn.DataParallel(module, device_ids=None, output_device=None, dim=0)
でラップされているのではないだろうか?
(もし違ったらこの解決方法は使えません、ごめんなさい)
これは、CPU、GPUでマルチプロセスできるようにするモジュールらしく、CoreMLへの変換時には必要がない。
なので、ラップしない元のモデルを変換すれば、表題のエラーは出なくなる。
model = nn.DataParallel(my_model, [0])
model = model.module # Access to my_model.
model.eval()
ex_input = torch.randn([1,3,256,256])
traced = torch.jit.trace(model,ex_input)
mlmodel = ct.convert(traced,inputs=[ct.ImageType(shape=ex_input.shape,scale=1/255)])
どうでした? コンバートできましたか?
🐣
フリーランスエンジニアです。
お仕事のご相談こちらまで
rockyshikoku@gmail.com
Core MLやARKitを使ったアプリを作っています。
機械学習/AR関連の情報を発信しています。