You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

nerual_test.cpp 2.9 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #include<iostream>
  2. #include<time.h>
  3. #include<string>
  4. #include<math.h>
  5. #include<fstream>
  6. #include"./autodiff/node.h"
  7. #include"./matrix/matrix_def.h"
  8. #include"./matrix/matrix_pro.h"
  9. #include"./welcome/score_wel.cpp"
  10. #include"./logistic/logistic_def.h"
  11. #include"./file_pro/data_read.h"
  12. #include"./grad_edge/matrix_grad.h"
  13. using namespace std;
  14. Node z = 1;
  15. Node t1 = 1,a13 = 1;
  16. Node loss_act(Node t1,Node a13)
  17. {
  18. Node loss = 0.5*(pow((t1-a13),2));
  19. return loss;
  20. }
  21. Node sigmoid_act(Node z)
  22. {
  23. Node sigmoid_act = 1/(1+(1/exp(z)));
  24. return sigmoid_act;
  25. }
  26. Node (*loss)(Node,Node) = loss_act;
  27. Node (*act)(Node) = sigmoid_act;
  28. int main()
  29. {
  30. cout<<"begin to train"<<endl;
  31. int input_dim = 2;
  32. int output_dim = 2;
  33. edge_network sequaltial(input_dim,output_dim);
  34. Matrix data_mine = CreateMatrix(100,3);
  35. Matrix label_mine = CreateRandMat(100,1);
  36. Matrix data = iloc(data_mine,0,1,0,0);
  37. cout<<"data: ";
  38. cout_mat(data);
  39. Matrix label = iloc(label_mine,0,3,0,0);
  40. cout<<"label: ";
  41. cout_mat(label);
  42. Matrix bias1 = CreateRandMat(2,1);
  43. Matrix weight1 = CreateRandMat(2,data.col);
  44. cout<<"weight1: ";
  45. cout_mat(weight1);
  46. int index = 1;
  47. Matrix backward2 = CreateMatrix(2,1);
  48. Matrix before_backward2 = CreateMatrix(2,1);
  49. change_va(before_backward2,1,0,1);
  50. for(index = 0;index<99;index++){
  51. Matrix output1 = sequaltial.forward(get_T(get_row(data_mine,index)),weight1,bias1);
  52. Matrix output1_without_act = sequaltial.forward_without_act(get_T(get_row(data_mine,index)),weight1,bias1);
  53. cout<<"output1_without_act: ";
  54. cout_mat(output1_without_act);
  55. Matrix weight2 = CreateRandMat(2,output1.row);
  56. cout<<"weight2: "<<endl;
  57. cout_mat(weight2);
  58. Matrix bias2 = CreateRandMat(weight2.row,1);
  59. Matrix output2 = sequaltial.forward(output1,weight2,bias2);
  60. Matrix output2_without_act = sequaltial.forward_without_act(output1,weight2,bias2);
  61. cout<<"output2_without_act: ";
  62. cout_mat(output2_without_act);
  63. cout<<"output2: ";
  64. cout_mat(output2);
  65. cout<<"output1:"<<endl;
  66. cout_mat(output1);
  67. Matrix weight3 = CreateRandMat(3,output2.row);
  68. Matrix bias3 = CreateRandMat(weight3.row,1);
  69. Matrix output3 = sequaltial.forward(output2,weight3,bias3);
  70. Matrix output3_without_act = sequaltial.forward_without_act(output2,weight3,bias3);
  71. cout<<"row: "<<label.row<<"col: "<<label.col;
  72. Matrix output_end = sequaltial.end_layer_backward(label,output3_without_act,*loss,*act);
  73. cout<<"outputend: ";
  74. cout_mat(output_end);
  75. cout<<"output3_without_act: ";
  76. cout_mat(output3_without_act);
  77. cout<<"output3: ";
  78. cout_mat(output3);
  79. Matrix backward3 = sequaltial.backward(output_end,output2_without_act,get_T(weight3),*act);
  80. cout<<"backward_before: ";
  81. cout_mat(before_backward2);
  82. before_backward2 = add(before_backward2,backward2);
  83. backward2 = sequaltial.backward(backward3,output1_without_act,get_T(weight2),*act);
  84. cout<<"backward2: ";
  85. save_txt(backward2,"a.csv");
  86. cout_mat(before_backward2);
  87. cout_mat(backward2);
  88. //can change the before_backward2 values;
  89. }
  90. }

Edge : 一个开源的科学计算引擎