18 #include <Eigen/Dense>
30 Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>
loadFromFile(
string fileName){
31 Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic> matrix;
32 ifstream input(fileName.c_str(), ios::binary);
35 input.read( reinterpret_cast<char*>( &r),
sizeof(r));
36 input.read( reinterpret_cast<char*>( &c),
sizeof(c));
39 for (
int i=0; i<c; i++)
40 for (
int j=0; j<r; j++)
41 input.read( reinterpret_cast<char*>( &matrix(j,i)),
sizeof(
double));
44 matrix.transposeInPlace();
49 int main(
int argc,
char *argv[]){
55 Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic> weights=
loadFromFile(
string(
"testVectors/inputWeights.dat"));
56 Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic> bias=
loadFromFile(
string(
"testVectors/inputBias.dat"));
59 vector<NeuralLayer<double> *> networkLayers;
63 weights=
loadFromFile(
string(
"testVectors/hiddenWeights.dat"));
68 weights=
loadFromFile(
string(
"testVectors/outputWeights.dat"));
74 Eigen::Matrix<double, Eigen::Dynamic, 1> input(10,1);
75 input<<0.8333,0.8333,0.8333,0.8333,0.8333,0.6871,0.5833,0.4371,0.3333,0.4000;
86 Eigen::Matrix<double, Eigen::Dynamic, 1> outputExpected(9,1);
87 outputExpected<<0.2039,0.5875,0.2798,0.6588,0.5064,0.5675,0.3414,0.6927,0.3164;
89 cout<<
"difference = "<<networkLayers[2]->output-outputExpected<<endl;
92 for (vector<
NeuralLayer<double> *>::iterator nl=networkLayers.begin(); nl!=networkLayers.end(); ++nl)