동시에 f2M_destroy(ann[i]) 함수는 그리드를 파괴하지 않습니다! 여기에 가정이 있습니다 ...
기능 자체:
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;}}}return0;}
메모리가 해제됩니다.
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; }}
행운을 빕니다.
ZY 어떤 순서로든 또는 처음부터 마지막까지 네트워크를 파괴하는 경우 문제가 발생할 수 있습니다. 마지막에서 이전까지, 즉 생성 방법의 역순으로 필요합니다.
이제 나는 어드바이저를 테스트하고 그런 순간을 포착했습니다.
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
코드가 반환하는 숫자는 다음과 같습니다.
a = f2M_create_standard (nn_layer,nn_input,nn_hidden1,nn_hidden2,nn_output);
Print(a);
따라서 네트워크 ID가 1024까지 올라가면 시스템이 새 메시 생성을 거부합니다.
동시에 f2M_destroy(ann[i]) 함수는 그리드를 파괴하지 않습니다! 여기에 가정이 있습니다 ...
동시에 f2M_destroy(ann[i]) 함수는 그리드를 파괴하지 않습니다! 여기에 가정이 있습니다 ...
Alexander, f2M_destroy_all_anns() 함수를 사용해 보셨습니까?
운동하는 데 차이가 있을 수 있습니까?
네, 지금 해봤는데 한 문제가 현지화 된 것 같습니다...
I. - 어드바이저에 static int AnnsNumber = 1027을 넣었습니다.
- ANN 폴더에서 모든 것을 삭제하고 로그를 지웁니다.
- 로그에 따르면 네트워크는 7에서 1024 사이의 인덱스로 생성됩니다.
- 메쉬는 .1017.net에서 .0.net까지의 번호를 가진 파일에 저장됩니다.
이 순서를 여러 번 반복했습니다. 아무 것도 변경되지 않았습니다.
첫 번째 로그를 첨부합니다.
.
=============================
Ⅱ. init() 시작 부분에 f2M_destroy_all_anns() 함수를 삽입했습니다. 그리고 그림은 관절의 끝에서만 더 나은 방향으로 극적으로 변경되었습니다.
22:44:41 2008.07.31 23:59 FANN-EA_tmp USDJPY,M5: f2M_save(1, E:\ANN\USDJPY-870.1.net) 반환: 0
22:44:41 2008.07.31 23:59 FANN-EA_tmp USDJPY,M5: f2M_destroy(1) 반환: 0
22:44:41 2008.07.31 23:59 FANN-EA_tmp USDJPY,M5: f2M_save(0, E:\ANN\USDJPY-870.0.net) 반환: -1
22:44:41 2008.07.31 23:59 FANN-EA_tmp USDJPY,M5: f2M_destroy(0) 반환: -1
제로 그리드는 보존되지 않았지만 1024.net은 보존되었습니다. 그러나 이것은 이미 사소한 일입니다)))
누군가가 모든 옵션을 설명했습니다. CVS 코드에는 이러한 오류가 없습니다.
질문: 누가 FANN2MQL을 어떻게 배포했습니까?
설치 프로그램? 사무실과 손입니다. 대지? 또 다른 방법?
어쩌면 우리 모두가 반네트워크 음모의 희생자일까요? )
글쎄, 아마도 나는 이상한 보물에 FANN을 추가 할 것입니다 ...
실험을 위해 무차별 대입(즉, 각 막대: ~300,000)으로 차원 30/N/N/1의 네트워크 46개로 구성된 위원회를 훈련하기로 결정했습니다.
명확히 해주세요. 46개의 네트워크가 각각 다른 출력을 가지고 있습니까?
스케일 범위는 무엇입니까?
가능하면 한 위원회 그리드의 프로필을 첨부하십시오.
이제 내가 어드바이저를 테스트하고 그런 순간을 포착했습니다.
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
코드가 반환하는 숫자는 다음과 같습니다.
a = f2M_create_standard (nn_layer,nn_input,nn_hidden1,nn_hidden2,nn_output);
Print(a);
따라서 네트워크 ID가 1024까지 올라가면 시스템이 새 메시 생성을 거부합니다.
동시에 f2M_destroy(ann[i]) 함수는 그리드를 파괴하지 않습니다! 여기에 가정이 있습니다 ...
따라서 라이브러리 자체에 정의되어 있습니다.
동시에 f2M_destroy(ann[i]) 함수는 그리드를 파괴하지 않습니다! 여기에 가정이 있습니다 ...
기능 자체:
메모리가 해제됩니다.
행운을 빕니다.
ZY 어떤 순서로든 또는 처음부터 마지막까지 네트워크를 파괴하는 경우 문제가 발생할 수 있습니다. 마지막에서 이전까지, 즉 생성 방법의 역순으로 필요합니다.
ZY 어떤 순서로든 또는 처음부터 마지막까지 네트워크를 파괴하는 경우 문제가 발생할 수 있습니다. 마지막에서 이전까지, 즉 생성 방법의 역순으로 필요합니다.
추가하겠습니다. 또는 터미널 충돌의 경우. 그러나 해결책은 찾은 것 같습니다.
질문이 다릅니다. Vladislav, "중개자" 없이 C++ 코드를 읽는 것 같습니다.
동일한 네트워크 위원회 응답과 가중치의 올바른 초기화에 대한 문제에 대해 언급할 수 있습니까? ( 여기 및 더 많은 로그 에 대해 자세히 설명되어 있지만 여기 에 가중치에 대한 질문이 있습니다)
올가미와 VladislavVG
정말 감사합니다
명확히 해주세요. 46개의 네트워크 각각이 다른 출력을 가지고 있습니까?
스케일 범위는 무엇입니까?
가능하면 한 위원회 그리드의 프로필을 첨부하십시오.
네. 각 그리드에는 서로 다른 입력이 있지만 이것이 필수적인 것은 아닙니다. 예를 들어 동일한 RSI 및 하나의 그리드와 같은 표준 신호를 사용하여 모든 입력에서 무차별 대입에 대해 여전히 음수 값을 얻을 수 있습니다.
가중치의 초기 초기화는 -1, 1입니다.
프로필 정보 ... 훈련된 네트워크의 결과 파일을 의미합니까?