Bir mayın tarlasında pazar görgü kuralları veya görgü kuralları - sayfa 21

 
grasn писал(а) >>

Ben yaratırken, bir sanatçı gibi görünmeliyim! Ama kodladığımda ... :o)))

Not : Seryoga, özellikle MathCAD'de pratik olarak tek uçludur, ancak C++/FORTRAN'da ... farklı olacaktır, ancak MathCAD'de - hafifçe söylemek gerekirse, değil (bu özel durum için). Ve ortalama kullanırsanız, hesaplama daha da hızlı olacaktır ve örneğin, corr kullanırsanız, o zaman "hızlı" algoritmanız bir hata olacaktır :o) Nasıl yaptıklarını bilmiyorum, ama gelince "toplama" operatörü, çok daha hızlı bir döngüdür. Bunu yapmazsanız, en son sürümü yükleyin.

Açık.

Bilgi için teşekkürler!

 
Neutron >> :

Tüm bu ekonomiyi her okumada eğitmenin arzu edildiğini unutmayın - yeterli görünmeyecektir.

Şimdi anladım! Bütün komiteleri bir yığında saydım ...

Gizli katmandaki nöron sayısını artırmayacağım. Neden, iki kişiyle iyi çalışıyorsa.

Sakıncası yoksa, doğrudan ORO'ya gitmek istiyorum çünkü. Zaten hazır ve çalışan iki katmanlı bir ızgaram var ("bir fenerden" ağırlıklarla bile), ilgileniyorsanız, kodu gönderebilirim.

 

Şimdiye kadar bunu yaptım:



d = 17;

w \u003d 17 * 3 + 4 \u003d 55;

P \u003d 4 * 55 * 55 / 17 \u003d 712;

-------------------------------------------------- ----------------------


Şimdiye kadar, ORO algoritması aşağıdaki gibi anlaşıldı (sadece çıktı katmanının ağırlıkları için):

// ----------------------------------------- ЭПОХА ---------------------------------------------------

for(int i = cikl; i > 2; i--)
{
out = OUT(i); // Получаем выход сетки
target = (Close[i]-Close[i+1])/Close[i+1];--------------------// Получаем целевое значение
delta = target - out;-----------------------------------------// Вычитаем выход сетки из целевого значения
pr = th(out);-------------------------------------------------// Вычисляем производную выходного сигнала
pr = 1 - pr*pr;-----------------------------------------------//

for(int n = 0; n < 4; n++)
{
Corr[n] += delta * pr * D2[n];--------------------------------// Вычисляем ошибку для каждого веса и суммируем её за всю эпоху
Norm[n] += Corr[n]*Corr[n];-----------------------------------// Считаем норму вектора коррекций для каждого веса за всю эпоху
}
}
// ------------------------------------- КОНЕЦ ЭПОХИ --------------------------------------------------

// ----------------------------------- КОРРЕКЦИЯ ВЕСОВ ------------------------------------------------

for(i = 0; i < 4; i++)

W2[i] += Corr[i]/MathSqrt(Norm[i]);



Her şey çalışıyor gibi görünüyor! Ama bir şeyler hala yanlış. 1000'den fazla dönem, tüm ağırlıklar çok küçüldü:

W2[0] = 0.0876 W2[1] = 0.0772 W2[2] = -0.0424 W2[3] = -0.05

Neyi kaçırıyorum ve hatayı şimdi giriş ağırlıklarına nasıl itebilirim?

 
Prival писал(а) >>

Özel mesajlara bakın. Buraya yazdığım için özür dilerim. ancak bu mesajlar genellikle yansıtılmaz.

Sergey, bir bak.

paralokusa

Biraz sonra cevaplayacağım.

Şimdi NS-ki için girdi verilerimle uğraşıyorum - aklıma bu fikir geldi. Bu arada, eğitim vektörünün uzunluğunu hesaplarken neden ağırlık sayısını 3 ile çarptınız? Anladığım kadarıyla, w=17+4'e sahip olmalısınız ve bu kadar! Komitenin her üyesini kişisel vektörünle eğitiyorsun...

 
Neutron >> :

...Bu arada, eğitim vektörünün uzunluğunu hesaplarken neden ağırlık sayısını 3 ile çarptınız? Anladığım kadarıyla, w=17+4'e sahip olmalısınız ve bu kadar! Komitenin her üyesini kişisel vektörünüzle eğitiyorsunuz...

Bu durumda, giriş vektörü aynıdır. Her okumada bir kez okunur ve daha sonra komitenin her üyesi kişisel "puanları" (ağırlıkları) aracılığıyla ona "bakar" ve bir karar verir.

Elbette her komite üyesi için ayrı ayrı okuyabilirsiniz ama sonuç aynıysa ne anlamı var? Girdi vektörü, kota + tek bir girdinin art arda 16 artışıdır.

Ah... anladım! Evet, eskiden iki farklı girişim vardı. vektörün: Fibo serisi boyunca dt ile tırnak artışları - 2,3,5,8... ve Luke serisi boyunca diğeri - 3,4,7,11... ve sadece 2 üye vardı Sonra komitenin her üyesi kendi vektörünü okur, ama şimdi ORO'yu anlamaya odaklanmak için her şeyi basitleştirdim. Yani bu durumda vektör birdir.

Ve ağırlık bundan dolayı çok azalabilir. sadece ikinci katmanı eğittiğimi?

 

Sonuç aynı: w=17+4 ve her üye aynı vektörlere sahip.

paralocus , işte böyle düşünüyorum. Hadi, arabanın önüne geçmeyeceksiniz, ancak bir tohum için MQL'de çıktıda doğrusal olmayan iki katmanlı doğrusal olmayan bir algılayıcı çözeceksiniz ve olumlu bir sonuç alacaksınız. Ardından (gerekirse) ağlar komitesine geçeceksiniz.

Sen ne diyorsun?

 
Neutron >> :

Sonuç aynı: w=17+4 ve her üye aynı vektörlere sahip.

paralocus , işte böyle düşünüyorum. Hadi, arabanın önüne geçmeyeceksiniz, ancak bir tohum için MQL'de çıktıda doğrusal olmayan iki katmanlı doğrusal olmayan bir algılayıcı çözeceksiniz ve olumlu bir sonuç alacaksınız. Ardından (gerekirse) ağlar komitesine geçeceksiniz.

Sen ne diyorsun?

TAMAM! Onlar. tüm komiserleri ve başkanı alıp götürüyoruz. "Haydut mermileri" gibi... - :) Hemen yapalım!

Biri hariç P/S - ilk

 

İyi hadi gidelim!

1. Son nöronun çıkışındaki hatayı bulun: d2out=X[-1]-OUT2, (MQL gibi numaralandırma anlamında ve bu "gelecek" sayımıdır).

2. doğrusal olmayışı hesaba katarak girişine göre yeniden hesaplayın: d2in=d2out*(1-OUT2^2)

3. Aynı hata, aksonu boyunca birinci katmanın her bir nöronunun çıkışına kadar gider! Şimdi, bu, çıkışlarında bir hatadır - d1out ve girişe yeniden hesaplayarak prosedürü (2) tekrarlayın: d1[1]in=d1out*(1-OUT1[1]^2) ve ayrıca gizli olanın ikinci nöronuna katman.

 
Ağırlıklar hesaplanan hata ile düzeltildi mi, yoksa henüz değil mi?
 

Numara.

İlk olarak, her ağırlık için mikro düzeltmeyi hesaplıyoruz: dw=in*din - delta kuralı - giriş sinyalini belirli bir girişe indirgenmiş hata ile çarpıyoruz. Ve bunu, eğitim vektörünün tüm okumaları boyunca her ağırlık için ayrı bir toplayıcıda özetliyoruz. Öğrenme döneminin bir yinelemesinde ağırlıklar ayarlanmaz. Yalnızca mikro düzeltmeler ve bunların kareleri toplanır (başka bir toplayıcıda).

PS Yukarıdaki gönderi hatayı düzeltti. Türev şu şekilde bulunur: *(1-OUT2^2).

Neden: