YutaroOgawa/pytorch_advanced

【2章】2_8 推論の実施 推論時の関数のエラーについて

Opened this issue · 7 comments

小川様

現在、書籍を拝見させていただきながらコードを走らせています。

バージョン
Pytorch 1. 10. 0
cuda 10.2
で実装しているのですが、
以下のコードのdetections = net(x)でエラーが起きており解決できない状態にあります。
自らコードをいじったりもしていおりません。
お時間ございましたら教えていただけると幸いです。
お返事お待ちしていおります。

5. SSDで予測

net.eval() # ネットワークを推論モードへ
x = img.unsqueeze(0) # ミニバッチ化:torch.Size([1, 3, 300, 300])
detections = net(x)

@atsu20471120 さま

ご連絡いただき、ありがとうございます。

こちら過去のIssueの

【第二章】2-8_SSD_inference.ipynb_推論時のエラーについて(PyTorchのバージョン1.5以上で発生)(link)

第2章第8節 Torchのバージョン変更に伴うエラー(link)

あたりが参考になるかもしれません。

PyTorchのv1.0で書籍が書かれており、v1.5からだいぶ変わったため、動作がうまくいかない場面が発生したり(しなかったり・・・)します。

上記、Issueを参考に、一度ご検討いただければ幸いです。

お手数をおかけしますが、どうぞよろしくお願い致します。

丁寧にご返信していただきありがとうございます。
ご提示していただいたリンク先の解決策もすでに行ってみたのですが、うまくいかない状態です。
まだ何か解決策があれば教えていただけると幸いです。

@atsu20471120 さま

状況をありがとうございます。
それでは、こうなったら、該当部分付近を1行ずつ実行してみて、
エラーが出た箇所と、エラーメッセージを投稿いただけますでしょうか?

そこから、きっかけを探りたいと思います。

小川様
連絡遅れてしまい大変申し訳ございませんでした。
エラーがでた箇所
detections = net(x)
エラー内容
RuntimeError: Legacy autograd function with non-static forward method is deprecated. Please use new-style autograd function with static forward method. (Example: https://pytorch.org/docs/stable/autograd.html#torch.autograd.Function)

以上となっております。
よろしくお願いいたします。

@atsu20471120 さま

#71 (comment)

上記の過去Issueのリンク先の内容が、まさに同じかもしれないと思いました。

いかがでしょうか?


【第二章】2-8_SSD_inference.ipynb_推論時のエラーについて(PyTorchのバージョン1.5以上で発生)

同じ症状の気がしますが、Google Colaboratoryで実行すると以下のエラーが表示されました。ちなみに、PyTorchのバージョンは1.5.0+cu101でした。

---> 49 detections = net(x)
50 print(detections.shape)
51 print(detections)

2 frames
/usr/local/lib/python3.6/dist-packages/torch/autograd/function.py in call(self, *args, **kwargs)
143 def call(self, *args, **kwargs):
144 raise RuntimeError(
--> 145 "Legacy autograd function with non-static forward method is deprecated. "
146 "Please use new-style autograd function with static forward method. "
147 "(Example: https://pytorch.org/docs/stable/autograd.html#torch.autograd.Function)")

RuntimeError: Legacy autograd function with non-static forward method is deprecated. Please use new-style autograd function with static forward method. (Example: https://pytorch.org/docs/stable/autograd.html#torch.autograd.Function)

@YutaroOgawa
迅速な対応に感謝いたいます。
提示していただいた過去のissueを以前に試してみたのですがエラーは解消できませんでした。
ただダウングレードに関しましてまだ行っていないので試してみようと思います。
pytorch 初心者にもかかわらず丁寧に対応していただきありがとうございます。

エラーが解消した際に随時連絡させていただきます。
またほかに解決方法ございましたら教えていただけると幸いです。

@atsu20471120 さま

ありがとうございます。
本書を執筆してから時間も経ち、PyTorchのバージョン依存で動かない部分で苦労させてしまい、大変申し訳ございません。

ひとまずはバージョンを落として動作させ、その後、PyTorchに慣れた際に、新バージョン用に修正していただければ幸いです(さきほどのIssueの解決策でいけそうな気がしてはいるのですが、また別の問題が発生しているのかもしれません。。。)

お手数をおかけしますが、どうぞよろしくお願い致します。