"New Neural", MetaTrader 5 platformu için bir sinir ağı motorunun Açık Kaynak projesidir. - sayfa 40

 

Bunlar sigmoidin hücum açısı katsayıları için fonksiyonlardır:

 //+------------------------------------------------------------------+
double ytrans0( double y= 0.5 ) // [0;0.5;1] --> [0;1;500.5] гипербола с перегибом в 0.5
  {
   double x=line0(y);
   return (x> 0.5005 ? 0.5005 /( 1.001 -x):x* 2 .);
  }
//+------------------------------------------------------------------+
double ytrans1( double y= 0 .) // [-1;0;1] --> [0;1;500.5] сдвинутая гипербола с перегибом в 0.0
  {
   double x=(line1(y)+ 1 .)/ 2 .;
   return (x> 0.5005 ? 0.5005 /( 1.001 -x):x* 2 .);
  }
//+------------------------------------------------------------------+

Not: Neden yazıldığını açıklayacağım:

görev: sigmoidin saldırı açısını nöronların çıktıları ile düzenlemek gerekir, çıktılar [0;1] veya [-1;1] dahilindedir.

[0;1] ile seçeneği inceleyelim. 0'dan 0,5'e kadar olan alanda, çıkış sıcaklığında bir düşüşe neden olan hücum açısını azaltmak gerekir, bölgede 0,5'ten 1'e kadar, tam tersine açının artması gerekir, ancak asıl şey şudur: pürüzsüzlük ve geçişler olmadan.

Bunların belirli bir orta noktada bükülmesi olan bir hiperbole ihtiyacı var. Doğru, hücum açısını kontrol etmek için, sadece bir çıktı kullanmaya veya birkaçını aritmetik ortalama olarak işlemeye değer, aksi takdirde eşik fonksiyonunu yayan açıya doğru kilitleme olacaktır.

ZZY, eğer verilen girişler kullanılırsa, line0() ve line1() işlevlerine gerek yoktur, ancak daha sonra ytrans1() 'de [0;1] giriş aralığına bir kaydırma gereklidir.

 
TheXpert :

Bu arada.

Sigmoid tipi bir fonksiyona ihtiyacımız var.

Gereksinimler, fonksiyonun kendisinin ve türevinin (hesaplanması çok zor olmayan) normal formu ve ters fonksiyonun ve türevinin normal formudur.

Bunlar, yukarıdaki sigmoid fonksiyonların tersidir.

 //+------------------------------------------------------------------+
double Invsigma0( double c) //  вход [0;1] обратные
  {
   return (- log (( 1 .-c)/c));
  }
//+------------------------------------------------------------------+
double Invsigma1( double c) //  вход [-1;1]
  {
   return (- log (( 1 .-c)/( 1 .+c)));
  }
//+------------------------------------------------------------------+
double Dsigma0( double c) //  вход [0;1] производные
  { //exp(-c)/(1+exp(-c))^2
   double e= exp (-c);
   double c2= 1 .+e;
   return (e/(c2*c2));
  }
//+------------------------------------------------------------------+
double Dsigma1( double c) //  вход [-1;1]
  { // (2*E^-c)/(1+E^-c)^2 
   double e= exp (-c);
   double c2= 1 .+e;
   return ( 2 .*e/(c2*c2));
  }
//+------------------------------------------------------------------+
double DInvsigma0( double c) // вход [0;1] производные обратной сигмы
  {
   return ( 1 ./(c-c*c));
  }
//+------------------------------------------------------------------+
double DInvsigma1( double c) // вход [-1;1]
  {
   return (- 2 ./(c*c- 1 .));
  }
//+------------------------------------------------------------------+

ancak ikincisinin bir kontrole ihtiyacı var, aksi takdirde #IND ile karşılaşabilirsiniz

Not Kontrol etmedim, #IND ile karşılaşmamak için her şeyin kontrol edilmesi gerekiyor

ZZY pardon kareyi unuttum, düzeltildi.

 
Ukrayna :
Tüm X için 4 işlevin tümü tanımlanmalıdır
 
Ukrayna :

Bunlar, yukarıdaki sigmoid fonksiyonların tersidir.

ancak ikincisinin bir kontrole ihtiyacı var, aksi takdirde #IND ile karşılaşabilirsiniz


Fonksiyona şöyle bir şey koyun:

 if (x> 0.9999999 )
x= 1.0 ;
if (x<- 0.9999999 )
x=- 1.0 ;
 
joo :

Fonksiyona şöyle bir şey koyun:

Buna lineer aktivatörler denilebilir, zaten kafa karıştıran formülleri karıştırmaya gerek yoktur.

ZY 39 sayfasında, son iki fonksiyon line0 () ve line1 ().

ZZY, 39. sayfada Mline()'ın fazlalık olup olmadığını kontrol etmek için bir işlev daha ekledi -#IND #IND

 
Ben aptalım.
 
TheXpert :


?

 

Ne olmuş? Severim.

İsim sorununun artık buna değmediğini anlıyorum?

 
TheXpert :

Ne olmuş? Severim.

İsim sorununun artık buna değmediğini anlıyorum?

))

geliştirme sürecinde, her zaman olduğu gibi yine de yüz kez değişecek

 

Her şey yolunda görünüyor, ama bir şey ya doğru değil ya da gereksiz ya da yeterli değil ...

Ve neden belli değil, çünkü Daha yakından incelediğinizde hiçbir kusur bulamazsınız.

Ayrı bir kafan var mı? kullanıcının avatarında mı?

Ya da uyumanız gerekiyor. Şimdi ne yapacağım. Ve yarın turnada.