活性化関数:Softmax関数
簡単な例
ベクトル型のテンソルを与えた場合。
code:softmax1.py
import torch as pt
import torch.nn as nn
softmax = nn.Softmax(dim=0)
y = softmax(X)
print('y:', y)
print('y.sum():', y.sum())
code:結果.py
y.sum(): tensor(1.0000)
入力データのうち、最も値の大きい20に対応する要素の確率が最大の9.9995e-01となっている。
備考:
ベクトル型=1次元なので軸の向きは「dim=0」のみ指定できる。
sumメソッド【torch】を用いてベクトルの総和を求めた結果は1となっている。出力が確率として解釈できることが確認できる。
多次元の場合
2次元のテンソルを与える。この場合、確率をとる範囲を2方向に対して考える必要がある。
code:softmax2.py
import torch as pt
import torch.nn as nn
softmax0 = nn.Softmax(dim=0) # 縦方向
softmax1 = nn.Softmax(dim=1) # 横方向
X = pt.tensor(10, 20, 5, 5], [11, 10, 20, 0, dtype=pt.float)
y0 = softmax0(X)
print('y:', y0)
y1 = softmax1(X)
print('y:', y1)
code:結果.py
dim=0の場合、縦方向にみた4本のベクトルに対してsoftmax関数を適用している。縦に並んだ2要素の和$ \approx 1となっている。
dim=1の場合、横方向にみた2本のベクトルに対してsoftmax関数を適用している。y1の0行目はsoftmax1.pyで示した結果と同じである。
/icons/hr.icon
※ ブラウザのバックボタンで戻る
https://scrapbox.io/files/650186366eac6a001b2177bf.png