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

 

Şimdi danışmanı test ettim ve öyle bir an yakaladım ki

2009.12.24 23:04:29 2009.09.04 14:00 n5_test EURUSD,H1: -1
2009.12.24 23:04:29 2009.09.04 14:00 n5_test EURUSD,H1: -1
2009.12.24 23:04:29 2009.09.04 14:00 n5_test EURUSD,H1: -1
2009.12.24 23:04:28 2009.09.04 13:00 n5_test EURUSD,H1:1024
2009.12.24 23:04:27 2009.09.04 12:00 n5_test EURUSD,H1: 1023
2009.12.24 23:04:26 2009.09.04 11:00 n5_test EURUSD,H1: 1022


Bu sayılar kodun döndürdüğü sayılardır:

a = f2M_create_standard (nn_layer,nn_input,nn_hidden1,nn_hidden2,nn_output);
Print(a);

Böylece ağ kimliği 1024'e çıkıyor ve ardından sistem yeni bir ağ oluşturmayı reddediyor.

Aynı zamanda, f2M_destroy(ann[i]) işlevi hiçbir ızgarayı yok etmez! İşte bir varsayım...

 
Kharin писал(а) >>

Aynı zamanda, f2M_destroy(ann[i]) işlevi hiçbir ızgarayı yok etmez! İşte bir varsayım...

Alexander, f2M_destroy_all_anns() işlevini denedin mi;

Belki çalışma konusunda farklılıklar olacaktır?

 

Evet şimdi denedim, bir sorun lokalize olmuş gibi görünüyor...

I. - Danışmanda static koydum int AnnsNumber = 1027;

- ANN klasöründeki her şeyi silerim, günlüğü temizlerim.

- Loga göre ağlar 7 ile 1024 arasında değişen indekslerle oluşturulur.

- Meshler, .1017.net'ten .0.net'e kadar sayılarla dosyalara kaydedilir

Bu diziyi birkaç kez tekrarladı - hiçbir şey değişmez.

İlk günlüğü ekliyorum.

.

============================

II. init()'in başına f2M_destroy_all_anns() işlevi eklendi; ve resim, yalnızca eklemin sonunda, daha iyisi için çarpıcı biçimde değişti

22:44:41 2008.07.31 23:59 FANN-EA_tmp USDJPY,M5: f2M_save(1, E:\ANN\USDJPY-870.1.net) döndürüldü: 0
22:44:41 2008.07.31 23:59 FANN-EA_tmp USDJPY,M5: f2M_destroy(1) döndürüldü: 0
22:44:41 2008.07.31 23:59 FANN-EA_tmp USDJPY,M5: f2M_save(0, E:\ANN\USDJPY-870.0.net) döndürüldü: -1
22:44:41 2008.07.31 23:59 FANN-EA_tmp USDJPY,M5: f2M_destroy(0) döndürüldü: -1

sıfır ızgara korunmadı, ancak 1024.net korundu. Ama bu zaten önemsiz)))

Dosyalar:
fanneea_tmp.zip  18 kb
 
Dali писал(а) >>

Birisi tüm seçenekleri yorumladı. CVS kodunda böyle bir hata yoktur.

Soru: FANN2MQL'yi kim nasıl dağıttı?

yükleyici? Ofis ile eller. alan? Diğer yol?

Belki de hepimiz bir ağ karşıtı komplonun kurbanlarıyız? )

 
Henry_White писал(а) >>

Eh, belki FANN'i de tuhaflıklar hazinesine ekleyeceğim ...

Deney uğruna, 30/N/N/1 boyutunda 46 ağdan oluşan bir komiteyi kaba kuvvetle (yani her çubukta: ~300 bin) eğitmeye karar verdim.

Lütfen açıkla. 46 ağın her birinin farklı çıktıları var mı?

Ölçek aralığı nedir?

Mümkünse, bir komite tablosunun profilini ekleyin.

 
Kharin >> :

Şimdi danışmanı test ettim ve öyle bir an yakaladım ki

2009.12.24 23:04:29 2009.09.04 14:00 n5_test EURUSD,H1: -1
2009.12.24 23:04:29 2009.09.04 14:00 n5_test EURUSD,H1: -1
2009.12.24 23:04:29 2009.09.04 14:00 n5_test EURUSD,H1: -1
2009.12.24 23:04:28 2009.09.04 13:00 n5_test EURUSD,H1:1024
2009.12.24 23:04:27 2009.09.04 12:00 n5_test EURUSD,H1: 1023
2009.12.24 23:04:26 2009.09.04 11:00 n5_test EURUSD,H1: 1022


Bu sayılar kodun döndürdüğü sayılardır:

a = f2M_create_standard (nn_layer,nn_input,nn_hidden1,nn_hidden2,nn_output);
Print(a);

Böylece ağ kimliği 1024'e çıkıyor ve ardından sistem yeni bir ağ oluşturmayı reddediyor.

Aynı zamanda, f2M_destroy(ann[i]) işlevi hiçbir ızgarayı yok etmez! İşte bir varsayım...

Böylece kütüphanenin kendisinde tanımlanır:


#ifdef FANN2MQL_EXPORTS
#define FANN2MQL_API __declspec(dllexport)
#else
#define FANN2MQL_API __declspec(dllimport)
#endif

/* maximum number of concurrently handled networks */
#define ANNMAX	1024

....................................................


/* array of FANN network structures */
extern struct fann * _fanns [ ANNMAX ] ;
/* array of output values of networks */
extern double * _outputs [ ANNMAX ] ;
/* index to last allocated network */
extern int _ann ;
 
Kharin >> :


Aynı zamanda, f2M_destroy(ann[i]) işlevi hiçbir ızgarayı yok etmez! İşte bir varsayım...

İşlevin kendisi:


DLLFUNC int __stdcall f2M_destroy ( int ann )
{
	int i , last_null = _ann - 1 ;

	/* this network is not allocated */
	if ( ann < 0 | | ann > _ann | | _fanns [ ann ] = = NULL ) return ( - 1 ) ;

	/* destroy */
	fann_destroy ( _fanns [ ann ] ) ;

	/* clear the pointers */
	_fanns [ ann ] = NULL ;
	_outputs [ ann ] = NULL ;

	/* let reuse the handlers if last */
	if ( ann = = _ann ) {
		_ann - - ;

		/* look if we can recover any more handlers */
		for ( i = _ann ; i > - 1 ; i - - ) {
			if ( _fanns [ i ] = = NULL ) {
				_ann - - ;
			} else {
				break ;
			}
		}
	}

	return 0 ;
}

Bellek serbest bırakılır.

FANN_EXTERNAL void FANN_API fann_destroy ( struct fann * ann )
{
	if ( ann = = NULL )
		return ;
	fann_safe_free ( ann - > weights ) ;
	fann_safe_free ( ann - > connections ) ;
	fann_safe_free ( ann - > first_layer - > first_neuron ) ;
	fann_safe_free ( ann - > first_layer ) ;
	fann_safe_free ( ann - > output ) ;
	fann_safe_free ( ann - > train_errors ) ;
	fann_safe_free ( ann - > train_slopes ) ;
	fann_safe_free ( ann - > prev_train_slopes ) ;
	fann_safe_free ( ann - > prev_steps ) ;
	fann_safe_free ( ann - > prev_weights_deltas ) ;
	fann_safe_free ( ann - > errstr ) ;
	fann_safe_free ( ann - > cascade_activation_functions ) ;
	fann_safe_free ( ann - > cascade_activation_steepnesses ) ;
	fann_safe_free ( ann ) ;
}
#define fann_safe_free(x) {if(x) { free(x); x = NULL; }}

İyi şanlar.

ZY Ağları herhangi bir sırayla veya ilkinden sonuncusuna kadar yok etmek için sorun ortaya çıkabilir. Sondan bir öncekine - yani, nasıl oluşturulduklarının tersi sırayla gereklidir.

 
VladislavVG писал(а) >>

ZY Ağları herhangi bir sırayla veya ilkinden sonuncusuna kadar yok etmek için sorun ortaya çıkabilir. Sondan bir öncekine - yani, nasıl oluşturulduklarının tersi sırayla gereklidir.

Ekleyeceğim. Veya terminal çökmesi durumunda. Ama çözüm bulunmuş gibi.

Soru farklı. Vladislav, "aracılar" olmadan C++ kodunu okuyor gibisin.

Aynı ağ komitesi yanıtları ve ağırlıkların doğru başlatılmasıyla ilgili sorun hakkında yorum yapabilir misiniz? ( burada ve daha fazla günlük ayrıntılı olarak okuyun, ancak ağırlıklarla ilgili soru burada)

 

kement ve VladislavVG

Çok teşekkürler

 
lasso >> :

Lütfen açıkla. 46 ağın her birinin farklı çıktıları var mı?

Ölçek aralığı nedir?

Mümkünse, bir komite tablosunun profilini ekleyin.

Evet. Her şebekenin farklı girdileri vardır, ancak bu zorunlu değildir. Örneğin, aynı RSI ve bir ızgara gibi standart bir sinyal alabilir ve herhangi bir girişte kaba kuvvet üzerinde yine de negatif değerler alabilirsiniz.

Ağırlıkların ilk başlatılması -1, 1'dir.

Profil hakkında ... Eğitimli ağın ortaya çıkan dosyasını mı kastediyorsunuz?

Neden: