一个快速和免费的MT4资料库,让神经网络人非常高兴。 - 页 14

 

我现在已经测试了EA,发现了这个问题

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])函数并没有破坏任何网格!这是个假设...

 
Kharin писал(а)>>

然而,函数f2M_destroy(ann[i])并没有销毁任何网格!这是不可能的。这是个假设...

Alexander,你有没有试过f2M_destroy_all_anns()。

也许在性能上会有区别?

 

是的,现在试了一下,看起来有一个问题已经被本地化了......

I.- 我把静态int AnnsNumber = 1027放在EA中。

- 我删除了ANN文件夹中的所有东西,并清理了日志。

- 我可以从日志中看到,创建的网络指数从7到1024。

- 网络被保存在编号从.1017.net到.0.net的文件中。

我重复了几次这个序列,没有任何变化。

我附上第一个变体的日志。

.

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

II.我在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保存了。但这是小事)))。

附加的文件:
fanneea_tmp.zip  18 kb
 
Dali писал(а)>>

有人取消了所有选项的注释。在CVS的代码中没有这样的错误。

问题:是谁部署了FANN2MQL?

通过安装人员? 从官方网站上手写?通过任何其他手段?

也许我们所有人都是反网络阴谋的受害者? )

 
Henry_White писал(а)>>

我也要在FANN的怪事清单上加上...

为了实验的需要,决定通过bruteforcing(即在每个条上:~300k)来训练一个由46个30/N/N/1维的网组成的委员会。

请澄清一下。 46个网的每个网都有不同的输出吗?

尺度的范围是什么?

如果可能,请附上一个委员会网格的简介。

 
Kharin >> :

我现在已经测试了EA,发现了这个问题

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])函数并没有破坏任何网格!这是个假设...

所以它被定义在库本身。


#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 >> :


函数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;
			}
		}
	}

	return 0;
}

记忆被释放。

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; }}

好运。

如果你以随机的顺序或从第一到最后的顺序销毁网子,可能会出现问题。你需要从最后一个到最后一个销毁网,即按照创建网的相反顺序。

 
VladislavVG писал(а)>>

如果你以随机的顺序或从第一到最后的顺序销毁网子,可能会出现问题。它应该从最后一个到最后一个--也就是说,按照创建网的相反顺序。

让我补充一下。或者在终端崩溃的情况下。但解决方案似乎已经找到了。

这个问题是不同的。Vladislav,我认为你读C++代码时没有 "中介"。

你能评论一下相同的网格委员会反应和正确的权重值初始化的问题吗?(这里 有详细介绍,还有日志,这里有一个关于重量的 问题)

 

lasso和 VladislavVG

非常感谢你

 
lasso >> :

请澄清一下。 46个网络中的每一个的产出是否不同?

砝码的尺寸范围是多少?

如果可能,请附上一个委员会网格的简介。

是的,每个网格的输入是不同的,尽管这并不关键。你可以采取一个标准的信号,例如相同的RSI和一个网格,在Bruteforce上仍然得到任何输入的负值。

初始化的权重-1,1。

关于简介...你是指训练后的网络结果文件吗?

原因: