14#ifndef ACTIVATIONFUNCTIONS
15#define ACTIVATIONFUNCTIONS
27 #define arcs_assert(a) (assert(a))
30 #define EventLogVar(a)
50 static double Step(
double u){
71 return 1.0/(1.0 + exp(-u));
84 static double ReLU(
double u){
117 template <ActvFunc T,
size_t N,
size_t M>
120 if constexpr(T == ActvFunc::STEP){
123 for(
size_t n = 1; n <= N; ++n){
124 for(
size_t m = 1; m <= M; ++m){
129 if constexpr(T == ActvFunc::IDENTITY){
132 for(
size_t n = 1; n <= N; ++n){
133 for(
size_t m = 1; m <= M; ++m){
138 if constexpr(T == ActvFunc::SIGMOID){
141 for(
size_t n = 1; n <= N; ++n){
142 for(
size_t m = 1; m <= M; ++m){
147 if constexpr(T == ActvFunc::TANH){
152 if constexpr(T == ActvFunc::ReLU){
155 for(
size_t n = 1; n <= N; ++n){
156 for(
size_t m = 1; m <= M; ++m){
161 if constexpr(T == ActvFunc::SOFTMAX){
164 for(
size_t n = 1; n <= N; ++n){
165 setcolumn(Y,
Softmax(getcolumn(U, n)), n);
176 template <ActvFunc T,
size_t N,
size_t M>
179 if constexpr(T == ActvFunc::STEP){
181 for(
size_t n = 1; n <= N; ++n){
182 for(
size_t m = 1; m <= M; ++m){
187 if constexpr(T == ActvFunc::IDENTITY){
189 for(
size_t n = 1; n <= N; ++n){
190 for(
size_t m = 1; m <= M; ++m){
195 if constexpr(T == ActvFunc::SIGMOID){
197 for(
size_t n = 1; n <= N; ++n){
198 for(
size_t m = 1; m <= M; ++m){
203 if constexpr(T == ActvFunc::TANH){
207 if constexpr(T == ActvFunc::ReLU){
209 for(
size_t n = 1; n <= N; ++n){
210 for(
size_t m = 1; m <= M; ++m){
215 if constexpr(T == ActvFunc::SOFTMAX){
217 arcs_assert(
false &&
"Softmax is not supported in internal layers.");
#define arcs_assert(a)
ARCS用assertマクロ a : assert条件
Definition ARCSassert.hh:17
ActvFunc
活性化関数のタイプの定義
Definition ActivationFunctions.hh:35
活性化関数
Definition ActivationFunctions.hh:45
static Matrix< 1, M > Softmax(const Matrix< 1, M > &u)
Softmax関数
Definition ActivationFunctions.hh:106
static double ReLU(double u)
ReLU活性化関数
Definition ActivationFunctions.hh:84
static double Step(double u)
ステップ活性化関数
Definition ActivationFunctions.hh:50
static double DerivativeSigmoid(double u)
シグモイド関数活性化関数の微分
Definition ActivationFunctions.hh:77
static double Identity(double u)
恒等活性化関数
Definition ActivationFunctions.hh:63
static double Sigmoid(double u)
シグモイド関数活性化関数
Definition ActivationFunctions.hh:70
static void f(const Matrix< N, M > &U, Matrix< N, M > &Y)
活性化関数
Definition ActivationFunctions.hh:118
static double DerivativeReLU(double u)
ReLU活性化関数の微分
Definition ActivationFunctions.hh:97
static void fp(const Matrix< N, M > &U, Matrix< N, M > &Y)
活性化関数の微分
Definition ActivationFunctions.hh:177
行列/ベクトル計算クラス(テンプレート版)
Definition Matrix.hh:44
constexpr TT GetElement(size_t n, size_t m) const
指定した要素番号の値を返す関数
Definition Matrix.hh:489
static constexpr Matrix ones(void)
m行n列の要素がすべて1の行列を返す関数
Definition Matrix.hh:655
constexpr void SetElement(size_t n, size_t m, TT val)
指定した要素番号に値を設定する関数
Definition Matrix.hh:480