目利きの方に質問です - ページ 3 12345678910...21 新しいコメント PapaYozh 2008.11.11 06:51 #21 Chris_Brown писал(а)>> また、4×9の2次元配列の行列があり、各要素に0.1という値が割り当てられているとしたら、次のようなものになるでしょうか。 Talexが 正しく指摘しているように、ArrayInitialize 関数を使って配列を初期化することができます(そうすべきです)。 Артём 2008.11.11 13: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 10:22 #23 また、ハイパーボリックタンジェントについては、正しくカウントされているのでしょうか? return((MathExp( A* x)-MathExp(- A* x))/(MathExp( A* x)+MathExp(- A* x))); Артём 2008.12.02 16:24 #24 配列の範囲を動的に設定する方法はありますか? TheXpert 2008.12.02 16: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 17:26 #26 値域は-1〜1です。私の理解が正しければ double ScaledTanh = Scale*tanh - Shift; いえ、そういうことではありません。 標準的な配列の宣言。 int Mas[50]; // ここでは,0 から 49 までの範囲で配列を定義しています. 動的に、つまり何らかの計算をするときにこの範囲を変更するという意味です。 Sceptic Philozoff 2008.12.02 18:10 #27 ArrayResize() - 配列の大きさを変更します。 Артём 2008.12.02 18:19 #28 Mathemat >> : ArrayResize() - 配列の大きさを変更します。 嗚呼、これがその例だ。 double W[3][4]; ArrayResize(W,2) 結果は、3が2に変わります。2つ目の4を6に変えるにはどうしたらよいでしょうか。 -------- もう一つ、(例えば)こんな考えもあります。 #define Input 4 //入力層のニューロン数 #define Out 1 //出力層のニューロン数 double W[Input][Out+1];/Weight マトリックス が、ここでOutに1を足すというエラーが発生します。 Rid 2008.12.21 11:33 #29 皆さん、こんにちは。 あまり関係ない話ですがアドバイスをお願いします。 PDF形式のテキストをWordに変換するにはどうすればよいですか? (ファイルサイズが大きいため、「トワイライト」D.Glukhovsky 65 mbとなります。) Victor Nikolaev 2008.12.21 12:15 #30 rid писал(а)>> 皆さん、こんにちは。 あまり関係ない話ですがアドバイスをお願いします。 PDF形式のテキストをWordに変換するにはどうすればよいですか? (ファイルサイズが大きいため、「トワイライト」D.Glukhovsky 65 mbとなります。) 普段はFineReaderで認識し、Wordに変換しています。他の選択肢もあるかもしれませんが。 しかし、この質問は間違いなく本題から外れています。 12345678910...21 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
また、4×9の2次元配列の行列があり、各要素に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() - 配列の大きさを変更します。
嗚呼、これがその例だ。
double W[3][4];
ArrayResize(W,2)
結果は、3が2に変わります。2つ目の4を6に変えるにはどうしたらよいでしょうか。
--------
もう一つ、(例えば)こんな考えもあります。
#define Input 4 //入力層のニューロン数
#define Out 1 //出力層のニューロン数
double W[Input][Out+1];/Weight マトリックス
が、ここでOutに1を足すというエラーが発生します。
皆さん、こんにちは。
あまり関係ない話ですがアドバイスをお願いします。
PDF形式のテキストをWordに変換するにはどうすればよいですか?
(ファイルサイズが大きいため、「トワイライト」D.Glukhovsky 65 mbとなります。)
皆さん、こんにちは。
あまり関係ない話ですがアドバイスをお願いします。
PDF形式のテキストをWordに変換するにはどうすればよいですか?
(ファイルサイズが大きいため、「トワイライト」D.Glukhovsky 65 mbとなります。)
普段はFineReaderで認識し、Wordに変換しています。他の選択肢もあるかもしれませんが。
しかし、この質問は間違いなく本題から外れています。