Activation

활성화 함수 값을 계산하고 전달된 벡터/행렬에 그 값을 씁니다.

bool vector::Activation(
  vector&                   vect_out,      // 값을 얻기 위한 벡터
  ENUM_ACTIVATION_FUNCTION  activation,    // 활성화 함수
   ...                                     // 추가 매개변수
   );
 
 
bool matrix::Activation(
  matrix&                   matrix_out,    // 값을 얻기 위한 행렬
  ENUM_ACTIVATION_FUNCTION  activation     // 활성화 함수
   );
 
 
bool matrix::Activation(
  matrix&                   matrix_out,    // 값을 얻기 위한 행렬
  ENUM_ACTIVATION_FUNCTION  activation,    // 활성화 함수
  ENUM_MATRIX_AXIS          axis,          // 축
   ...                                     // 추가 매개변수
   );

매개 변수

vect_out/matrix_out

【out】 활성화 함수의 계산된 값을 얻기 위한 벡터 또는 행렬.

activation

[in] ENUM_ACTIVATION_FUNCTION 열거로 부터의 활성화 함수.

axis

[in]ENUM_MATRIX_AXIS 열거형 값(AXIS_HORZ — 가로축, AXIS_VERT — 세로축).

...

【in】 일부 활성화 함수에 필요한 추가 매개변수. 매개변수를 지정하지 않으면 기본값이 사용됩니다.

반환값

성공하면 true를 반환하고 그렇지 않으면 false를 반환.

추가 매개변수

일부 활성화 함수는 추가 매개변수를 허용합니다. 매개변수를 지정하지 않으면 기본값이 사용됩니다.

   AF_ELU  (Exponential Linear Unit)  
     double alpha=1.0
   
   Activation function: if(x>=0f(x) = x
                      else f(x) = alpha * (exp(x)-1)
   
   
   AF_LINEAR   
     double alpha=1.0
     double beta=0.0
   
   Activation function: f(x) = alpha*x + beta
   
   
   AF_LRELU   (Leaky REctified Linear Unit)   
     double alpha=0.3
   
   Activation function: if(x>=0f(x)=x
                      else f(x) = alpha*x
   
                        
   AF_RELU  (REctified Linear Unit)   
     double alpha=0.0
     double max_value=0.0
     double treshold=0.0
   
   Activation function: if(alpha==0f(x) = max(x,0)
                      else if(x>max_valuef(x) = x
                      else f(x) = alpha*(x - treshold)
   
   
   AF_SWISH   
     double beta=1.0
   
   Activation function: f(x) = x / (1+exp(-x*beta))
   
   
   AF_TRELU   (Thresholded REctified Linear Unit)   
     double theta=1.0
   
   Activation function: if(x>thetaf(x) = x
                      else f(x) = 0
   
   
   AF_PRELU   (Parametric REctified Linear Unit)   
     double alpha[] - learned array of coeefficients
   
   Activation function: if(x[i]>=0f(x)[i] = x[i]
                      else f(x)[i] = alpha[i] * x[i]

참조

인공 신경망에서 뉴런의 활성화 함수는 입력 신호 또는 입력 신호의 집합으로 정의되는 출력 신호를 결정합니다. 어떠한 활성화 함수를 선택할지 여부는 신경망 성능에 큰 영향을 미칩니다. 다른 모델 파트(레이어)는 다른 활성화 함수를 사용할 수 있습니다.

추가 매개변수 사용의 예:

   vector x={0.10.40.92.0, -5.00.0, -0.1};
   vector y;
 
   x.Activation(y,AF_ELU);
   Print(y);
   x.Activation(y,AF_ELU,2.0);
   Print(y);
 
   Print("");
   x.Activation(y,AF_LINEAR);
   Print(y);
   x.Activation(y,AF_LINEAR,2.0);
   Print(y);
   x.Activation(y,AF_LINEAR,2.0,5.0);
   Print(y);
 
   Print("");
   x.Activation(y,AF_LRELU);
   Print(y);
   x.Activation(y,AF_LRELU,1.0);
   Print(y);
   x.Activation(y,AF_LRELU,0.1);
   Print(y);
  
   Print("");
   x.Activation(y,AF_RELU);
   Print(y);
   x.Activation(y,AF_RELU,2.0,0.5);
   Print(y);
   x.Activation(y,AF_RELU,2.0,0.5,1.0);
   Print(y);
 
   Print("");
   x.Activation(y,AF_SWISH);
   Print(y);
   x.Activation(y,AF_SWISH,2.0);
   Print(y);
 
   Print("");
   x.Activation(y,AF_TRELU);
   Print(y);
   x.Activation(y,AF_TRELU,0.3);
   Print(y);
 
   Print("");
   vector a=vector::Full(x.Size(),2.0);
   x.Activation(y,AF_PRELU,a);
   Print(y);
 
/*  Results
   [0.1,0.4,0.9,2,-0.993262053000915,0,-0.095162581964040]
   [0.1,0.4,0.9,2,-1.986524106001829,0,-0.190325163928081]
   
   [0.1,0.4,0.9,2,-5,0,-0.1]
   [0.2,0.8,1.8,4,-10,0,-0.2]
   [5.2,5.8,6.8,9,-5,5,4.8]
   
   [0.1,0.4,0.9,2,-1.5,0,-0.03]
   [0.1,0.4,0.9,2,-5,0,-0.1]
   [0.1,0.4,0.9,2,-0.5,0,-0.01]
   
   [0.1,0.4,0.9,2,0,0,0]
   [0.2,0.8,0.9,2,-10,0,-0.2]
   [-1.8,-1.2,0.9,2,-12,-2,-2.2]
   
   [0.052497918747894,0.239475064044981,0.6398545523625035,1.761594155955765,-0.03346425462142428,0,-0.047502081252106]
   [0.054983399731247,0.275989792451045,0.7723340415895611,1.964027580075817,-0.00022698934351217,0,-0.045016600268752]
   
   [0,0,0,2,0,0,0]
   [0,0.4,0.9,2,0,0,0]
   
   [0.1,0.4,0.9,2,-10,0,-0.2]
*/