Gin5050 / deep-learning-with-pytorch-ja

deep-learning-with-pytorchの日本語版repositoryです。
124 stars 55 forks source link

p2ch14/p2_run_everything.ipynbにつきまして #6

Open KK-Saito opened 3 years ago

KK-Saito commented 3 years ago

お世話になっております。 修正していただいたファイルを用いたところ,subset0~2のデータを使用してp2_run_everything.ipynbのChapter 14の部分も実行できました。 ありがとうございました。

以下,いくつか気になった点をご報告します。 subset0~2のデータを使うと,Colab Proで実行中のディスク残量が27GB程度になってしまいます。  run('p2ch14.training.ClassificationTrainingApp', f'--epochs=100', 'nodule-nonnodule') で100エポック実行していくと,最初は1エポックあたり4分程度なのですが,その後,実行を続けていくと,だんだんディスク残量が増えていき,1エポックに1時間程度かかるようになってしまいました。 どうやら,せっかく作成したキャッシュを消してしまっているようです。 そこで,37エポック目の途中で実行を中断しました。(これでも9時間程度かかりました。) いちおうここまでのTensorBoardの出力も確認できました。

その後,model名を書き換えて最後の層のファインチューニングも実行できました。 ただし,やはり1エポックに1時間程度かかってしまいましたので,3エポック目の途中で中断しました。

プログラムを実行できることが確認できましたので,もう少しいろいろ試してみたいと思います。

KK-Saito commented 3 years ago

お世話になっております。 以下,ご報告です。

キャッシュを作成し直して,ファインチューニングを行いました。 やはり30エポック目くらいから非常に時間がかかるようになってしまいましたので,33エポック目の途中で中断しましたが,テキストp.512 図14.10とほとんど同じ結果が得られました。

その後,再度キャッシュを作成し直し,最後の2層のファインチューニングを行いました。 ここでも31エポック目の途中で中断しました。 テキストよりサンプル数が少ないため,少し値が違いますが,p.513 図14.12とほぼ同様の結果となりました。

ここまで実行できればほぼ満足なのですが,その下のコマンド  run('p2ch14.nodule_analysis.NoduleAnalysisApp', '--run-validation') を実行すると,  FileNotFoundError: [Errno 2] No such file or directory: 'data/part2/models/seg_2020-01-26_19.45.12_w4d3c1-bal_1_nodupe-label_pos-d1_fn8-adam.best.state' というエラーが出ました。 当然,このファイルが無いため実行できないのですが,コマンドラインではファイル名の指定ができないようです。 (ここでは,何をしようとしているのでしょうか?)

また,p.518 図14.15のROC曲線は出力したいと思うのですが,training.pyにリスト14.12を追加すれば可能でしょうか?

他にも  p2ch13_explore_data.ipynb や  p2ch13_explore_diagnose.ipynb というファイルがありますので,それらも実行してみたいと思います。

KK-Saito commented 3 years ago

お世話になっております。 少し条件を変えて実験してみたところ,AUCが上昇し,recallとF1スコアも改善しました。

結節の大きさが最も重要なパラメータですので,  run('p2ch14.training.ClassificationTrainingApp', f'--epochs=100', 'nodule-nonnodule') でモデルを訓練するときに,全てのData Augmentationを行っているのですが,画像の大きさを変えてしまうと,Validationの際に結節の大きさの重要度の情報が失われてしまう気がしました。 そこで,Data Augmentationにおいて,scaleとあまり効果が見られなかったnoiseのAugmentationをしないでモデルを学習し直してみました。

このモデルを使って最終層のFine Tuningを行ったところ,改善が見られました。 subset0~2を使用してColab Proで実行したところ,  run('p2ch14.training.ClassificationTrainingApp', f'--epochs=40', '--malignant', '--dataset=MalignantLunaDataset', '--finetune=''/content/drive/MyDrive/Colab Notebooks/Deep_Learning_with_PyTorch/data-unversioned/part2/models/p2ch14/cls_2021-05-18_04.04.33_nodule-nonnodule.best.state', 'finetune-head') の26エポック目の途中でプログラムが止まってしまいましたが,25エポック目でAUCが0.80から0.86まで上昇しました。 また,recallが0.78から0.87まで上昇し,F1スコアも0.80から0.84程度まで改善しました。