11. MGL-MAT(2)行列同士の演算
●
行列の足し算 axpy!
– αX + Y → Y
●
行列積 gemm!
– αAB + βC → C
●
要素ごとの積 geem!
– αAB + βC → C
(axpy! alpha X Y)
(gemm! alpha A B beta C)
(geem! alpha A B beta C)
30. Softmax関数の実装
(defun average! (a batch-size-tmp &key (axis 0))
(sum! a batch-size-tmp :axis axis)
(scal! (/ 1.0 (mat-dimension a axis)) batch-size-tmp))
(defun softmax! (a result batch-size-tmp &key (avoid-overflow-p t))
;; In order to avoid overflow, subtract average value for each column.
(when avoid-overflow-p
(average! a batch-size-tmp :axis 1)
(fill! 1.0 result)
(scale-rows! batch-size-tmp result)
(axpy! -1.0 result a)) ; a - average(a)
(.exp! a)
(sum! a batch-size-tmp :axis 1)
(fill! 1.0 result)
(scale-rows! batch-size-tmp result)
(.inv! result)
(.*! a result))