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
ImportError: dlopen: cannot load any more object with static TLS
エラーが出たとき- precomputeの動作について
lesson1-vgg
- accuracy(log_preds,y) でエラー
lesson1-breeds
- resnext50のモデルがない
- set_dataの動作について
AttributeError: 'bool' object has no attribute 'mean' on accuracy()
のエラーが出るAttributeError: 'JpegImageFile' object has no attribute 'shape'. Image.open() returns PIL.JpegImagePlugin.JpegImageFile
のエラーが出る
lesson2-image_models
- set_dataの動作について
lesson3-rossman
- proc_df でエラーになる
lesson4-imdb
- Can’t find model ‘en’エラー対策
- save_encoder() は save_model() と何が違うのか
lesson6-rnn
- trn.txtとval.txtの作成のやり方
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
- クラスごとのサブディレクトリを作成する必要がある
- tfms_from_stats(stats, sz, aug_tfms=[RandomFlipXY()], pad=sz//8) でエラー
- accuracy(preds,y)でエラー
planet_cv
- 'fast_gen'のインポート時にエラー
NameError: name ‘im’ is not defined
というエラーが出る- learn.fit()時にエラー
- 0.2という閾値は opt_th() の結果から来ている
nasnet
- ConvLearner.pretrained の時にエラー
nlp
- def accuracy_multi(preds, targs, thresh) のところでエラーが出る
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