サンプルコード
import torch
import torch.nn.functional as F
def mish(x):
return x * torch.tanh(F.softplus(x))
MNISTのサンプルのReLU関数を上記のmishで置き換える。
x = mish(x) #x = F.relu(x)
実行結果(例)
ちょっとした違いですが精度が上がったことが確認できました。
# ReLU関数
epoch:14, Test set: Average loss: 0.0265, Accuracy: 9911/10000 (99%)
# Mish関数
epoch:14, Test set: Average loss: 0.0258, Accuracy: 9922/10000 (99%)
活性化関数は様々な種類がありますが、その特性とタスクや適用するデータの組み合わせ次第で精度が変わるため、組み合わせに合わせて良いものを探す必要がありそうです。こちらのQiitaの記事が多くの活性化関数をまとめています。