[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [amibroker] NEURAL ANALYSIS IN AMIBROKER



PureBytes Links

Trading Reference Links

This code is not AFL - it is C code, and the header files are C headers 
(with the exception of iostream, which is a C++ header).  The only way 
you will get this to work is by using a C compiler (Microsoft Visual C++ 
or GNU C are most common, both which can be had for free - 
http://www.microsoft.com/express/vc/).

I have written a neural net plugin for AB based on the well regarded 
FANN library which I was planning on atleast partially releasing, but 
time constraints on me from my day job and having higher priorities on 
my family have retarded the polishing and release process...



Regards,
Matt


Ton Sieverding wrote:
>
> Correct Prashanth. That's more or less where I left this AFL a year 
> ago. Missing all kinds of .h includes to run it. I've tried to find 
> the includes in my C++ stuff but failed ... Perhaps I should give it 
> another try on the www ...
>  
> Regards, Ton.
>  
>
>
>
>             > > #include <math.h>
>             > > #include <stdlib.h>
>             > > #include <iostream>
>             > > double input_hidden_weights[5][6]=
>             > > {
>             > > {9.40985654649721e-001, 9.23136985641824e+000, -
>             > > 2.86994950445746e+000, -1.26803931926022e+000, -
>             > > 7.70008830456271e+000, 1.25421731000059e+000 },
>             > > {3.08886279182467e+000, 5.78057919510794e+000,
>             > > 1.10741139003555e+001, -3.65436515636221e+000, -
>             > > 1.46817775035674e+001, 2.22520984659718e+001 },
>             > > {1.69160825877441e-001, -9.91646811530742e+000, -
>             > > 1.05635083282757e+001, 4.25517810226395e+000,
>             2.50631134577816e+000, -
>             > > 2.91169885599088e+000 },
>             > > {-6.47564626574024e-001, -6.79555863835188e+000, -
>             > > 4.77495170169956e+000, 1.35029793165373e+000,
>             2.78079262918906e+000, -
>             > > 1.90795645602409e+000 },
>             > > {1.43573516935369e+000, 7.90014107622549e+000,
>             > > 1.34639286162717e+000, -4.87454998380292e-001, -
>             > > 5.75300672778634e+000, 2.44385407464775e+000 }
>             > > };
>             > > double hidden_bias[5]={ -1.72504436049218e+000, -
>             > > 1.12353474266980e+001, 1.05782985606737e+001,
>             6.38618458656671e+000, -
>             > > 4.76099367812151e+000 };
>             > > double hidden_output_wts[1][5]=
>             > > {
>             > > {4.85655076789677e+000, 5.85365165791789e-001,
>             > > 3.11879288899187e+000, -8.48772823147294e+000, -
>             > > 9.35987517826960e+000 }
>             > > };
>             > > double output_bias[1]={ 5.51616000361064e+000 };
>             > > double max_input[6]={ 3.02200000000000e-001,
>             6.05400000000000e-001,
>             > > 1.81400000000000e-001, 1.59000000000000e-002,
>             6.06600000000000e-001,
>             > > 2.43900000000000e-001 };
>             > > double min_input[6]={ -2.82000000000000e-001,
>             -8.46700000000000e-
>             > > 001, -1.95700000000000e-001, -9.70000000000000e-003, -
>             > > 5.52700000000000e-001, -2.45100000000000e-001 };
>             > > double max_target[1]={ 1.35100000000000e-001 };
>             > > double min_target[1]={ -1.50800000000000e-001 };
>             > > double input[6];
>             > > double hidden[5];
>             > > double output[1];
>             > > void FindMax(double* vec, double* max, long*
>             maxIndex,int len)
>             > > {
>             > > long i;
>             > > *max = vec[0];
>             > > *maxIndex = 0;
>             > > for(i=1; i<len; i++)
>             > > {
>             > > if(vec[i]>*max)
>             > > {
>             > > *max = vec[i];
>             > > *maxIndex = i;
>             > > }
>             > > }
>             > > }
>             > > void FindMin(double* vec, double* min, long*
>             minIndex,int len)
>             > > {
>             > > long i;
>             > > *min = vec[0];
>             > > *minIndex = 0;
>             > > for(i=1; i<len; i++)
>             > > {
>             > > if(vec[i]<*min)
>             > > {
>             > > *min = vec[i];
>             > > *minIndex = i;
>             > > }
>             > > }
>             > > }
>             > > void ScaleInputs(double* input, double min, double
>             max, int size)
>             > > {
>             > > double delta;
>             > > long i;
>             > > for(i=0; i<size; i++)
>             > > {
>             > > delta = (max-min)/(max_input[i]-min_input[i]);
>             > > input[i] = min - delta*min_input[i]+ delta*input[i];
>             > > }
>             > > }
>             > > void UnscaleTargets(double* output, double min, double
>             max, int size)
>             > > {
>             > > double delta;
>             > > long i;
>             > > for(i=0; i<size; i++)
>             > > {
>             > > delta = (max-min)/(max_target[i]-min_target[i]);
>             > > output[i] = (output[i] - min + delta*min_target[i])/delta;
>             > > }
>             > > }
>             > > double logistic(double x)
>             > > {
>             > > if(x > 100.0) x = 1.0;
>             > > else if (x < -100.0) x = 0.0;
>             > > else x = 1.0/(1.0+exp(-x));
>             > > return x;
>             > > }
>             > > void ComputeFeedForwardSignals(double*
>             MAT_INOUT,double* V_IN,double*
>             > > V_OUT, double* V_BIAS,int size1,int size2,int layer)
>             > > {
>             > > int row,col;
>             > > for(row=0;row < size2; row++)
>             > > {
>             > > V_OUT[row]=0.0;
>             > >
>             for(col=0;col<size1;col++)V_OUT[row]+=(*(MAT_INOUT+(row*size1)+col)
>             > > *V_IN[col]);
>             > > V_OUT[row]+=V_BIAS[row];
>             > > if(layer==0) V_OUT[row] = logistic(V_OUT[row]);
>             > > if(layer==1) V_OUT[row] = tanh(V_OUT[row]);
>             > > }
>             > > }
>             > > void RunNeuralNet_Regression ()
>             > > {
>             > > ComputeFeedForwardSignals((double*)
>             > > input_hidden_weights,input,hidden,hidden_bias,6, 5,0);
>             > > ComputeFeedForwardSignals((double*)
>             > > hidden_output_wts,hidden,output,output_bias,5, 1,1);
>             > > }
>




Please note that this group is for discussion between users only.

To get support from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

For other support material please check also:
http://www.amibroker.com/support.html
 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/amibroker/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:amibroker-digest@xxxxxxxxxxxxxxx 
    mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx

<*> To unsubscribe from this group, send an email to:
    amibroker-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/