fast.aiのPractical Deep Learning For Coders, Part 1 (2018 edition)

fast.aiのPractical Deep Learning For Coders, Part 1 (2018 edition) を細々と続けていましたがようやく一通り終えた...! というところまでいきました。

7 weeksのコースなので2倍ぐらいの時間がかかっちゃった計算になります。。

さらにブログの筆もなかなか進まず.. (;´Д`)

良かった点は

  • v1(2017 edition)の復習ができた
  • 特にBatchNormalization、Resnetについて理解が深まった
  • 新しいテクニック SGDR (stochastic gradient descent with restarts) 、TTA (test time augmentation) を知れた

一方で残念だったところは

  • fast.aiのライブラリでかなり抽象化されているのでPyTorchでのコーディング力がついた感なし
  • 正直、v1(2017 edition)以上にforumに頼らないと進めない/分からないことがある

コーディング力をつけるためにはfast.aiのライブラリの中身をちゃんと読んでそこで何をやっているのか詳しく追っていく必要がありそうです。。

あとは発展途上ということもあって情報不足であったり動かないコードも多くforumにはかなりお世話になりました。 この辺が改善されると全受講者の無駄?な時間が減ると思います。

ということで、躓いた箇所や参考にしたforum情報をまとめておきたいと思います。

(注:本家のコードは随時更新されているので既に役に立たなくなっている情報もあるかもしれません)

躓いた箇所や参考になったforum記事のまとめ

lesson1
lesson1-vgg
lesson1-breeds
lesson2-image_models
lesson3-rossman
lesson4-imdb
lesson6-rnn
lesson6-sgd
  • ffmpegのインストール
  • Gradient Descent - Classificationのセクションで accuracyが上がらない
    • 以下のコードに修正したらaccuracyが上がるようになった

        # loss = nll(y_hat,y)
        loss = -1.0 * nll(y_hat, y) # loss must be a positive value.
      
lesson7-cifar10
planet_cv
nasnet
nlp
lang-model
  • データセットが見つからない
  • いろいろとエラーが出る..!
    • 以下のように修正したらとりあえず動いた

        #md = LanguageModelData(PATH, TEXT, **FILES, bs=bs, bptt=bptt, min_freq=10) # This does not work.
        md = LanguageModelData.from_text_files(PATH, TEXT, **FILES, bs=bs, bptt=bptt, min_freq=10)
      
        #learner = md.get_model(SGD_Momentum(0.7), bs, em_sz, nh, nl) # This does not work.
        learner = md.get_model(SGD_Momentum(0.7), em_sz, nh, nl)
      
        #learner.fit(10, 1, wds=1e-6, reg_fn=reg_fn, clip=clip) # fit() got multiple values for keyword argument 'reg_fn'
        learner.reg_fn = reg_fn
        learner.clip = clip
        learner.fit(10, 1, wds=1e-6)
      
cifar10-simplenet
  • ImageClassifierData.from_csv でエラー
    • とりあえず以下のコードにすれば動く

        # data = ImageClassifierData.from_csv(PATH, 'train', PATH/'train.csv', tfms=tfms, bs=bs)
        data = ImageClassifierData.from_paths(PATH, val_name='test', tfms=tfms, bs=bs)
      


これらの情報やその他メモを詰め込んだ自分の作業用ノートブックはこちらです。 github.com