向鉴赏家提问 - 页 3 12345678910...21 新评论 PapaYozh 2008.11.11 07:51 #21 Chris_Brown писал(а)>> 而如果有一个二维数组,一个4乘9的矩阵,每个元素被赋予0.1的值,会不会是这样的? 正如Talex 正确指出的,你可以(也应该)使用ArrayInitialize 函数来初始化数组。 Артём 2008.11.11 14:40 #22 帮助! 我无法理解NS的学习算法是如何运作的(有老师)。 我以我的NS为例(请不要骂我太多,我在这方面有点新)。 帮助我画出NS学习的算法 //Размеры матрицы double W[4][9];//Матрица весов размером 4 на 8 // W // W31 -0,52 -0,01 -0,08 0,35 Выходной слой // W21 1,52 1,35 1,12 -1,38 // W22 7,05 4,75 3,25 1,45 // W23 7,36 4,42 3,90 2,26 Скрытый слой 2 // W24 6,79 5,54 3,74 2,81 // W11 -4,65 13,06 7,00 4,67 0,07 // W12 -3,25 11,92 2,66 5,98 2,41 Скрытый слой 1 // W13 -3,31 8,93 3,32 5,57 4,20 // W14 4,33 4,86 9,84 8,96 1,52 //Функции активации нейронов double NormDate(double Date,int Type,int A) { double x; if ( Type==0){ x= Date; return(MathTan(MathExp( A* x)-MathExp(- A* x)/MathExp( A* x)+MathExp(- A* x)));//гиперболический тангенс } if ( Type==1){ x= Date; return(1/(1+MathExp(- A* x)));// сигмоид } } //+------------------------------------------------------------------+ //| Многослойная нейронная сеть. | //| Параметры сети: | //| Входные параметры подаются во входном массиве - X | //| Веса задаются в весовой матрице - W | //| Число скрытых слоёв = V | //| | //+------------------------------------------------------------------+ double neuronet1(double W[][],double X[], int V){ int N=ArraySize( X); int i, j, I; double sum=0.0; double Out[99][99]; double summ=0.0; //Расчёты скрытых слоёв NC for ( I=0; I<= V-1; I++){ for( i= I* N; i<=( N-1+ N* I); i++){ for( j=0; j<= N-1; j++){ if( I==0) summ+=( W[ j][ i]* X[ j]);else summ+=( W[ j][ i]* Out[ I-1][ j]); } Out[ I][ i- I* N]= NormDate( summ,0,1); summ=0; } } //Расчёт выходного слоя NC for( j=0; j<= N-1; j++){ sum+= W[ j][8]* Out[ V-1][ j]; } sum= NormDate( sum,0,1); return( sum); } int init(){ //+------------------------------------------------------------------+ //| Инциализирование весовой матрицы случайными числами | //+------------------------------------------------------------------+ MathSrand(TimeLocal()); double Dia=1;//диапазон случайных чисел ArrayInitialize( W,(MathRand()/32767.0* Dia)); } int start(){ //+------------------------------------------------------------------+ //| Создание массива с входными данными | //+------------------------------------------------------------------+ double X[4]; X[0]=1.2447;// На первых порах пусть будут сами котировки X[1]=1.2458; X[2]=1.2364; X[3]=1.2377; double Out[1]; Out[1]=0.8;// например в процессе обучения должно получиться значение больше 0.8 //Пример обращения к функции нейросети Comment( neuronet1( W, X,2)); return(0);} //+------------------------------------------------------------------+ Артём 2008.11.12 11:22 #23 另外,关于双曲切线,它的计算是否正确? return((MathExp( A* x)-MathExp(- A* x))/(MathExp( A* x)+MathExp(- A* x))); Артём 2008.12.02 17:24 #24 有什么方法可以动态地设置数组的范围吗? TheXpert 2008.12.02 17:55 #25 Chris_Brown >> : 关于双曲正切,它的计算是否正确? tanh(x) = sinh(x)/cosh(x) = (e^x - e^-x)/(e^x + e^-x) 顺便说一下,函数e^x似乎并不快。 所以这样做更好。 double var = A* x; double expVar = MathExp( var); double revExpVar = 1/ expVar; double tanh = ( expVar - revExpVar)/( expVar + revExpVar) 它应该更快。 Chris_Brown>> 。 有什么方法可以动态地设置数组的范围吗? 值的范围是什么? 是从-1到1。如果我没有弄错的话。 double ScaledTanh = Scale*tanh - Shift; Артём 2008.12.02 18:26 #26 值的范围是什么? 是-1到1。如果我理解正确的话。 double ScaledTanh = Scale*tanh - Shift; 不,我不是这个意思。 标准的数组声明。 int Mas[50]; // 这里的数组是由0到49的范围定义的。 我的意思是动态的,即在进行一些计算时改变这个范围。 Sceptic Philozoff 2008.12.02 19:10 #27 ArrayResize() - 改变数组的大小。 Артём 2008.12.02 19:19 #28 Mathemat >> : ArrayResize() - 改变数组的大小。 啊哈,这里有一个例子。 双重W[3][4]。 ArrayResize(W,2) 结果是将3改为2。我们如何将第二个从4改为6? -------- 我还有一个想法:(比如说。) #define Input 4 //输入层的神经元数量 #define Out 1 //输出层的神经元数量 double W[Input][Out+1];//重量矩阵 但这里出现了在Out上加1的错误 Rid 2008.12.21 12:33 #29 大家下午好。 并非真正意义上的主题。请告知 -- 我如何将PDF格式的文本翻译成Word? (文件很大,-"黄昏",D. Glukhovsky 65 mb) Victor Nikolaev 2008.12.21 13:15 #30 rid писал(а)>> 大家下午好。 并非真正意义上的主题。请告知 -- 我如何将PDF格式的文本翻译成Word? (文件很大,-"黄昏",D. Glukhovsky 65 mb) 我通常在FineReader中识别并将其转换为Word。尽管可能有其他选择。 但这个问题绝对是偏离主题的。 12345678910...21 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
而如果有一个二维数组,一个4乘9的矩阵,每个元素被赋予0.1的值,会不会是这样的?
正如Talex 正确指出的,你可以(也应该)使用ArrayInitialize 函数来初始化数组。
帮助!
我无法理解NS的学习算法是如何运作的(有老师)。
我以我的NS为例(请不要骂我太多,我在这方面有点新)。
帮助我画出NS学习的算法
另外,关于双曲切线,它的计算是否正确?
关于双曲正切,它的计算是否正确?
tanh(x) = sinh(x)/cosh(x) = (e^x - e^-x)/(e^x + e^-x)
顺便说一下,函数e^x似乎并不快。
所以这样做更好。
它应该更快。
有什么方法可以动态地设置数组的范围吗?
值的范围是什么? 是从-1到1。如果我没有弄错的话。
值的范围是什么? 是-1到1。如果我理解正确的话。
不,我不是这个意思。
标准的数组声明。
int Mas[50]; // 这里的数组是由0到49的范围定义的。
我的意思是动态的,即在进行一些计算时改变这个范围。
ArrayResize() - 改变数组的大小。
啊哈,这里有一个例子。
双重W[3][4]。
ArrayResize(W,2)
结果是将3改为2。我们如何将第二个从4改为6?
--------
我还有一个想法:(比如说。)
#define Input 4 //输入层的神经元数量
#define Out 1 //输出层的神经元数量
double W[Input][Out+1];//重量矩阵
但这里出现了在Out上加1的错误
大家下午好。
并非真正意义上的主题。请告知 --
我如何将PDF格式的文本翻译成Word?
(文件很大,-"黄昏",D. Glukhovsky 65 mb)
大家下午好。
并非真正意义上的主题。请告知 --
我如何将PDF格式的文本翻译成Word?
(文件很大,-"黄昏",D. Glukhovsky 65 mb)
我通常在FineReader中识别并将其转换为Word。尽管可能有其他选择。
但这个问题绝对是偏离主题的。