Activation

Aktivasyon fonksiyonu değerlerini hesaplar ve onları aktarılan vektöre/matrise yazar.

bool vector::Activation(
  vector&                   vect_out,      // değerlerin yazılacağı vektör
  ENUM_ACTIVATION_FUNCTION  activation,    // aktivasyon fonksiyonu türü
   ...                                     // ek parametreler
   );
 
 
bool matrix::Activation(
  matrix&                   matrix_out,    // değerlerin yazılacağı matris
  ENUM_ACTIVATION_FUNCTION  activation     // aktivasyon fonksiyonu türü
   );
 
 
bool matrix::Activation(
  matrix&                   matrix_out,    // değerlerin yazılacağı matris
  ENUM_ACTIVATION_FUNCTION  activation,    // aktivasyon fonksiyonu türü
  ENUM_MATRIX_AXIS          axis,          // eksen
   ...                                     // ek parametreler
   );

Parametreler

vect_out/matrix_out

[out]  Aktivasyon fonksiyonunun hesaplanan değerlerinin yazılacağı vektör veya matris.

activation

[in] ENUM_ACTIVATION_FUNCTION numaralandırmasından aktivasyon fonksiyonu türü.

axis

[in] ENUM_MATRIX_AXIS numaralandırmasından değer (AXIS_HORZ - yatay eksen, AXIS_VERT - dikey eksen).

...

[in]  Bazı aktivasyon fonksiyonları için gereken ek parametreler. Hiçbir parametre belirtilmezse, varsayılan değerler kullanılır.

Geri dönüş değeri

Başarılı olursa true, aksi takdirde false geri döndürür.

Ek parametreler

Bazı aktivasyon fonksiyonları ek parametreler kabul eder. Hiçbir parametre belirtilmezse, varsayılan değerler kullanılır.

   AF_ELU  (Exponential Linear Unit - Üssel lineer birim)  
     double alpha=1.0
   
   Aktivasyon fonksiyonu: if(x>=0f(x) = x
                      else f(x) = alpha * (exp(x)-1)
   
   
   AF_LINEAR   
     double alpha=1.0
     double beta=0.0
   
   Aktivasyon fonksiyonu: f(x) = alpha*x + beta
   
   
   AF_LRELU   (Leaky REctified Linear Unit - Sızıntılı düzeltilmiş lineer birim)   
     double alpha=0.3
   
   Aktivasyon fonksiyonu: if(x>=0f(x)=x
                      else f(x) = alpha*x
   
                        
   AF_RELU  (REctified Linear Unit - Düzeltilmiş lineer birim)   
     double alpha=0.0
     double max_value=0.0
     double treshold=0.0
   
   Aktivasyon fonksiyonu: 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
   
   Aktivasyon fonksiyonu: f(x) = x / (1+exp(-x*beta))
   
   
   AF_TRELU   (Thresholded REctified Linear Unit - Eşikli düzeltilmiş lineer birim)   
     double theta=1.0
   
   Aktivasyon fonksiyonu: if(x>thetaf(x) = x
                      else f(x) = 0
   
   
   AF_PRELU   (Parametric REctified Linear Unit - Parametrik düzeltilmiş lineer birim)   
     double alpha[] - learned array of coeefficients
   
   Aktivasyon fonksiyonu: if(x[i]>=0f(x)[i] = x[i]
                      else f(x)[i] = alpha[i] * x[i]

Not

Yapay sinir ağlarında, nöronun aktivasyon fonksiyonu, bir girdi sinyali veya bir girdi sinyali kümesi tarafından tanımlanan çıktı sinyalini belirler. Aktivasyon fonksiyonunun seçimi, sinir ağının performansı üzerinde büyük bir etkiye sahiptir. Modelin farklı bölümleri (katmanlar) farklı aktivasyon fonksiyonlarını kullanabilir.

Ek parametrelerin kullanımına ilişkin örnekler:

   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);
 
/*  Sonuçlar
3   [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]
*/