FullyConnectedBench.cpp 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #include "FullyConnectedBench.h"
  2. #include "Error.h"
  3. #include "arm_nnfunctions.h"
  4. void FullyConnectedBench::test_fully_connected_tflite_s8()
  5. {
  6. q7_t *inp=input.ptr();
  7. q7_t *biasp=bias.ptr();
  8. q7_t *weightp=weight.ptr();
  9. q7_t *outp=output.ptr();
  10. q7_t *refp=ref.ptr();
  11. q15_t *tempp=temp.ptr();
  12. int32_t output_mult = 1073741824;
  13. int16_t output_shift = -1;
  14. int32_t filter_offset = 1;
  15. int32_t input_offset = 1;
  16. int32_t output_offset = -1;
  17. for(int i=0; i < this->repeatNb; i++)
  18. {
  19. arm_fully_connected_s8((int8_t*)inp
  20. ,(const int8_t*)weightp
  21. ,input.nbSamples()
  22. ,output.nbSamples()
  23. ,1
  24. ,input_offset
  25. ,filter_offset
  26. ,output_mult
  27. ,output_shift
  28. ,output_offset
  29. ,(const int8_t*)biasp
  30. ,(int8_t*)outp
  31. ,-128
  32. ,127
  33. ,tempp
  34. );
  35. }
  36. }
  37. void FullyConnectedBench::setUp(Testing::testID_t,std::vector<Testing::param_t>& params,Client::PatternMgr *mgr)
  38. {
  39. std::vector<Testing::param_t>::iterator it = params.begin();
  40. this->repeatNb = *it;
  41. input.reload(FullyConnectedBench::INPUT1_S8_ID,mgr);
  42. bias.reload(FullyConnectedBench::BIAS1_S8_ID,mgr);
  43. weight.reload(FullyConnectedBench::WEIGHT1_S8_ID,mgr);
  44. ref.reload(FullyConnectedBench::REF1_S8_ID,mgr);
  45. output.create(ref.nbSamples(),FullyConnectedBench::OUTPUT_S8_ID,mgr);
  46. temp.create(input.nbSamples(),FullyConnectedBench::TEMP_S16_ID,mgr);
  47. }
  48. void FullyConnectedBench::tearDown(Testing::testID_t id,Client::PatternMgr *mgr)
  49. {
  50. }