MT4 için hızlı ve ücretsiz bir kitaplık olan sinir ağı uzmanlarını memnun etmek için - sayfa 9

 
Bu 16 ızgaradan oluşan bir komite, oluşturulmakta olan dosyalara bakabilirsiniz.
 
Henry_White >> :

Tek çıkış nöronlu bir ızgaramız varsa, neden 16 çıktımız var?!... Yoksa 16 ızgaradan oluşan bir komite mi?

o

 

Herşey gönlünce olsun!

İkinci gece oturuyorum, bir kod parçası yapıştırıyorum

 void ann_prepare_input ( ) {
    int i ;
    double res = 0 ;
	 for ( i = 0 ; i < AnnInputs ; i + + ) {
      res = ( iRSI ( Symbol ( ) , 0 , 30 , PRICE_OPEN , i ) - 50.0 ) / 50.0 ; 
      if ( MathAbs ( res ) > 1 ) {
         if ( res > 0 ) {
            InputVector [ i ] = 1.0 ;            
         } else {
            InputVector [ i ] = - 1.0 ;            
         }
      } else {
         InputVector [ i ] = res ;            
      }
    }
}

anlamı ne anlamadım

 if ( MathAbs ( res ) > 1 ) {
         if ( res > 0 ) {
            InputVector [ i ] = 1.0 ;            
         } else {
            InputVector [ i ] = - 1.0 ;            
         }
      } else {
         InputVector [ i ] = res ;            
      }

res değeri birden büyükse, olamaz.

Bu bir sır değilse, lütfen bu noktayı açıklayın.

 
alex_r >> :

Herşey gönlünce olsun!

İkinci gece oturuyorum, bir kod parçası yapıştırıyorum

anlamı ne anlamadım

res değeri birden büyükse, olamaz.

Bu bir sır değilse, lütfen bu noktayı açıklayın.

Normalleştirilmiş değerler (1;-1) NN girişine beslenmelidir. Aksi takdirde, NN eğitimi belirsiz sonuçlara yol açabilir.

 

peki res nasıl hesaplanır

koşul

(MathAbs(res) > 1)
asla yürütülmeyecek ve girdi verilecek
 res = ( iRSI ( Symbol ( ) , 0 , 30 , PRICE_OPEN , i ) - 50.0 ) / 50.0
ve burada vakaların% 99,99'unda doğal olarak her şey ortaya çıkıyor, ancak 1 ve -1 değil
Öyleyse
 for ( i = 0 ; i < AnnInputs ; i + + ) {
      res = ( iRSI ( Symbol ( ) , 0 , 30 , PRICE_OPEN , i ) - 50.0 ) / 50.0 ; 

         if ( res > 0 ) {                 
            InputVector [ i ] = 1.0 ;            
         } else {
            InputVector [ i ] = - 1.0 ;            
         }        

    }

o zaman sadece 1 ve -1 olacak

ya da ben hatalıyım?

 
alex_r >> :

ya da ben hatalıyım?

Hatalısınız. Burada her şey yolunda gidiyor. Koda daha yakından bakmalısın. Bu çok basit ve açıktır. "//" nizin anlamını anlamadım - anlamı tamamen "öldürüyorlar".

iRSI temel olarak aralıktan nadir sapmalarla 0 ile 100 arasında değerler verir (bu nedenle maliyeti (MathAbs(res) > 1) ), bu nedenle res, vakaların %99,9'unda 1 ve -1 sınırında yer alır ve GirdiVektörü - %100 olarak.

Her ifadenin ayrıştırılmasını bekliyorsanız, burada kimsenin programlama dersi verme fırsatı olduğunu sanmıyorum. Ve bu bölüm için offtopik olacak. Belki de bu, forumun başka bir bölümüne yöneltilmeli veya bana kişisel olarak yazılmalıdır.

not. Başka birinin koduna "yorum" yapmamalısınız (yorum yapmak daha iyidir). Bu, diğer insanları yanıltabilir ve sadece IMHO'nun tadı kötü olabilir. Yazarla aynı fikirde değilseniz - kendi versiyonunuzu yazın.

 

Kaldırıldı yorum yapıldı.

Şimdi açıklıyorum, res>0 olduğunda, burada 0, RSI göstergesinin 50 seviyesine karşılık gelir, 1 atarız, aksi takdirde -1 atarız

Ne net değil? Minimum kod ve daha fazlası değil.

Kaynak kodunda yazıldığı gibi, veri normalizasyonu için ana koşul GERÇEKLEŞTİRİLMEMEKTEDİR.

Tek şey başka bir sıfırı filtrelemek, ancak bu durumda o kadar önemli değil.

 
Seçeneğiniz -1 veya 1 değerleri verecektir. Peki tüm bunlar neden? Ve ağı nasıl eğiteceksiniz? Daha doğrusu NE? Devletlerin bu "ikililiği" ne işe yarar? Bundan ağ eğitimi için nasıl bir model oluşturursunuz?
 
Henry_White >> :

Normalleştirilmiş değerler (1;-1) NN girişine beslenmelidir. Aksi takdirde, NN eğitimi belirsiz sonuçlara yol açabilir.

Belki bu yazı kafanızı karıştırdı.. Burada ikili durumu değil, aralığı kastettim.

 
alex_r >> :

Kaynak kodunda yazıldığı gibi, veri normalizasyonu için ana koşul GERÇEKLEŞTİRİLMEMEKTEDİR.

yanılıyorsunuz çünkü. şebekenin girişlerinde (1. katman) şu aralığa ayarlanmış sigmoidler vardır: -1;1. Bu nedenle, girişlerin normalleştirilmesi için gerekli ve yeterli bir koşul, -1 ile 1 aralığındaki herhangi bir değerdir.


İnşa etmeye çalıştığınız şey, sigmoid işlevini kendi gag'ınızla değiştirmek, yani. Kaidenin altındaki giriş verilerinin ayrıklığını hafife alan ve buna bağlı olarak eğitim örneğinin önemli sayıda karşılıklı çelişkili veri içereceği durumlar yaratan Signum(input).

Neden: