目的
藁にも縋る思いで、、、活性化関数Mishを試してみた。
(実際は、もう少し気楽に、、、しかし、なんかすばらしいものないかな。。。という思いにて。)
Mishとは
Mishとは、以下のような形をした活性化関数です。
出典:https://github.com/digantamisra98/Mish

使ってみた結果
上記のgithub
(https://github.com/digantamisra98/Mish)
のコードを使いました。
具体的には、
https://github.com/digantamisra98/Mish/tree/master/Examples%20and%20Benchmarks
の
cifar-10-resnext-50-mish.ipynb
のコードを動かしました。
ジュピターノートの使い方がわからないので、このINのコードを
はぎとって、動かしました。
コードの変更点1(動かすという意味では、1行のみ変更。)
動かすという意味では、1行のみ変更。
以下をコメントアウト
# print(os.listdir("../input"))
コードの変更点2(自分のノートパソコン都合で、3行変更)
りっぱなパソコンの場合は、この変更は不要。
ワタシのは、立派ですが、凄く立派ではないノートPCで、
Geforce GTX 1050Ti
なので、
resnext-50
を動かすには、メモリが足らないようです。
**バッチサイズを極端に小さくしました。16にしました。**元は、128か64だったと思います。
def get_training_dataloader(train_transform, batch_size=16, num_workers=0, shuffle=True):
def get_testing_dataloader(test_transform, batch_size=16, num_workers=0, shuffle=True):
batch_size = 16
コードの変更点3(cifar10を対象としているので、augmentationが足らないと思ったので。)
augmentationを適当に増やしました。
transforms.RandomCrop(32,padding=8),
transforms.ColorJitter(brightness=0.5),
以下も1/10にしました。
learning_rate = 0.0001
結果発表!! accuracyの結果(cifar10)
一日ぐらい動かしましたが、epochは、まだ、50程度。
Test accuracy: 0.9025..
⇒普通な結果。あと1日ぐらい動かしてみますが。。。
Epoch 40/100.. Time per epoch: 1337.4019.. Average time per step: 0.4280.. Train loss: 0.3072.. Train accuracy: 0.8935.. Top-3 train accuracy: 0.9848.. Test loss: 0.3861.. Test accuracy: 0.8870.. Top-3 test accuracy: 0.9823
Epoch 41/100.. Time per epoch: 1338.3242.. Average time per step: 0.4283.. Train loss: 0.3007.. Train accuracy: 0.8952.. Top-3 train accuracy: 0.9858.. Test loss: 0.3657.. Test accuracy: 0.8917.. Top-3 test accuracy: 0.9829
Epoch 42/100.. Time per epoch: 1340.5420.. Average time per step: 0.4290.. Train loss: 0.2975.. Train accuracy: 0.8958.. Top-3 train accuracy: 0.9865.. Test loss: 0.3853.. Test accuracy: 0.8913.. Top-3 test accuracy: 0.9821
Epoch 43/100.. Time per epoch: 1340.4637.. Average time per step: 0.4289.. Train loss: 0.2878.. Train accuracy: 0.8994.. Top-3 train accuracy: 0.9864.. Test loss: 0.3520.. Test accuracy: 0.8999.. Top-3 test accuracy: 0.9856
Epoch 44/100.. Time per epoch: 1338.6670.. Average time per step: 0.4284.. Train loss: 0.2824.. Train accuracy: 0.9005.. Top-3 train accuracy: 0.9869.. Test loss: 0.3827.. Test accuracy: 0.8941.. Top-3 test accuracy: 0.9839
Epoch 45/100.. Time per epoch: 1330.7962.. Average time per step: 0.4259.. Train loss: 0.2768.. Train accuracy: 0.9018.. Top-3 train accuracy: 0.9876.. Test loss: 0.3541.. Test accuracy: 0.9025.. Top-3 test accuracy: 0.9845
Mishに関するコメント(感想?)
煽ったような技術記事をみて試したのだが、それほど、興味を引くような結果は得られていない。
例えば、検出精度を追及する際に、これが大きく貢献するような気は、ちょっと、しませんでした。
例えば、ReLUで105層のものが、Mishで102層で同じ性能が出るとか、そういったレベルに感じる。最高性能は、条件フリーだと同じぐらいでは??(すみません、何の根拠もないですが。。。)
まとめ
今回、cifar10を対象にしましたが、
cifar10のようなシンプルな問題の場合、
さすがに、活性化関数ぐらいでは、すばらしいことは起きませんね。。。
もうすこし、世間の評価を待ちたいと思います。
今後
特別、予定なし。
コメントなどあれば、お願いいます。