예를 들어, 나는 구체적으로 내 국회를 취할 것입니다 (Pliz는 나를 많이 꾸짖지 마십시오. 나는이 사업에 익숙하지 않습니다)
NN 학습 알고리즘 컴파일에 도움
//Размеры матрицы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;//Расчёты скрытых слоёв NCfor( 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;}}//Расчёт выходного слоя NCfor( 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);}//+------------------------------------------------------------------+
그리고 4 x 9 행렬인 2차원 배열이 있고 각 요소에 0.1의 값이 할당되면 다음과 같을까요?
Talex 가 올바르게 지적했듯이 ArrayInitialize 함수를 사용하여 배열을 초기화할 수 있습니다.
돕다!
NN 학습 알고리즘(선생님과 함께)이 어떻게 작동하는지 이해할 수 없습니다.
예를 들어, 나는 구체적으로 내 국회를 취할 것입니다 (Pliz는 나를 많이 꾸짖지 마십시오. 나는이 사업에 익숙하지 않습니다)
NN 학습 알고리즘 컴파일에 도움
또한 쌍곡선 탄젠트를 희생하면서 올바르게 고려됩니까?
또한 쌍곡선 탄젠트를 희생하면서 올바르게 고려됩니까?
tanh(x) = sinh(x)/cosh(x) = (e^x - e^-x)/(e^x + e^-x)
그건 그렇고, e^x 함수는 빠르지 않은 것 같습니다.
따라서 다음과 같이 하는 것이 좋습니다.
더 빨라야 합니다.
배열의 범위를 동적으로 설정하는 방법이 있습니까?
가치 영역? -1에서 1까지입니다. 내가 올바르게 이해한다면 :
가치 영역? -1에서 1까지입니다. 내가 올바르게 이해한다면 :
아니요. 나는 다른 것에 대해 이야기하고 있습니다.
표준 배열 선언 :
정수 마스[50]; // 여기서 배열은 0에서 49 사이의 범위로 설정됩니다.
그리고 나는 동적으로 의미했습니다. 즉, 일부 계산으로이 범위를 변경하십시오.
ArrayResize() - 배열의 크기를 조정합니다.
아, 여기 예가 있습니다:
더블 W[3][4];
배열 크기 조정(W,2)
결과적으로 우리는 3을 2로 변경하지만 두 번째를 변경하는 방법은 무엇입니까? 4시부터 6시까지
--------
나는 다른 생각이 있었다: (예를 들어)
#define 입력 4 //입력 레이어의 뉴런 수
#define Out 1 //출력 레이어의 뉴런 수
double W[Input][Out+1];//가중 행렬
하지만 여기서 오류가 발생합니다. Out can not added 1
모두에게 좋은 하루.
주제에 관한 질문이 아닙니다. 제발. 말하다 -
PDF 텍스트를 Word로 번역하는 방법은 무엇입니까?
(파일이 큽니다, - "Twilight", D.Glukhovsky 65mb)
모두에게 좋은 하루.
주제에 관한 질문이 아닙니다. 제발. 말하다 -
PDF 텍스트를 Word로 번역하는 방법은 무엇입니까?
(파일이 큽니다. - "Twilight", D.Glukhovsky 65MB)
나는 보통 FineReader에서 인식하고 Word에서 증류합니다. 다른 옵션이 있을 수 있지만.
그러나 질문은 확실히 주제에서 벗어났습니다.