| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261 |
- #include "SVMF16.h"
- #include <stdio.h>
- #include "Error.h"
- void SVMF16::test_svm_linear_predict_f16()
- {
- const float16_t *inp = samples.ptr();
- int32_t *outp = output.ptr();
- int32_t *result;
- result=outp;
- for(int i =0; i < this->nbTestSamples; i++)
- {
- arm_svm_linear_predict_f16(&this->linear,inp,result);
- result++;
- inp += this->vecDim;
- }
- ASSERT_EQ(ref,output);
- }
- void SVMF16::test_svm_polynomial_predict_f16()
- {
- const float16_t *inp = samples.ptr();
- int32_t *outp = output.ptr();
- int32_t *result;
- result=outp;
- for(int i =0; i < this->nbTestSamples; i++)
- {
- arm_svm_polynomial_predict_f16(&this->poly,inp,result);
- result++;
- inp += this->vecDim;
- }
- ASSERT_EQ(ref,output);
- }
- void SVMF16::test_svm_rbf_predict_f16()
- {
- const float16_t *inp = samples.ptr();
- int32_t *outp = output.ptr();
- int32_t *result;
- result=outp;
- for(int i =0; i < this->nbTestSamples; i++)
- {
- arm_svm_rbf_predict_f16(&this->rbf,inp,result);
- result++;
- inp += this->vecDim;
- }
- ASSERT_EQ(ref,output);
- }
- void SVMF16::test_svm_sigmoid_predict_f16()
- {
- const float16_t *inp = samples.ptr();
- int32_t *outp = output.ptr();
- int32_t *result;
- result=outp;
- for(int i =0; i < this->nbTestSamples; i++)
- {
- arm_svm_sigmoid_predict_f16(&this->sigmoid,inp,result);
- result++;
- inp += this->vecDim;
- }
- ASSERT_EQ(ref,output);
- }
- void SVMF16::setUp(Testing::testID_t id,std::vector<Testing::param_t>& testparams,Client::PatternMgr *mgr)
- {
-
- int kind;
- Testing::nbSamples_t nb=MAX_NB_SAMPLES;
- (void)testparams;
- switch(id)
- {
- case SVMF16::TEST_SVM_LINEAR_PREDICT_F16_1:
- {
-
- samples.reload(SVMF16::SAMPLES1_F16_ID,mgr,nb);
- params.reload(SVMF16::PARAMS1_F16_ID,mgr,nb);
- dims.reload(SVMF16::DIMS1_S16_ID,mgr,nb);
- ref.reload(SVMF16::REF1_S32_ID,mgr,nb);
- }
- break;
- case SVMF16::TEST_SVM_POLYNOMIAL_PREDICT_F16_2:
- {
-
- samples.reload(SVMF16::SAMPLES2_F16_ID,mgr,nb);
- params.reload(SVMF16::PARAMS2_F16_ID,mgr,nb);
- dims.reload(SVMF16::DIMS2_S16_ID,mgr,nb);
- ref.reload(SVMF16::REF2_S32_ID,mgr,nb);
- }
- break;
- case SVMF16::TEST_SVM_RBF_PREDICT_F16_3:
- {
-
- samples.reload(SVMF16::SAMPLES3_F16_ID,mgr,nb);
- params.reload(SVMF16::PARAMS3_F16_ID,mgr,nb);
- dims.reload(SVMF16::DIMS3_S16_ID,mgr,nb);
- ref.reload(SVMF16::REF3_S32_ID,mgr,nb);
- }
- break;
- case SVMF16::TEST_SVM_SIGMOID_PREDICT_F16_4:
- {
-
- samples.reload(SVMF16::SAMPLES4_F16_ID,mgr,nb);
- params.reload(SVMF16::PARAMS4_F16_ID,mgr,nb);
- dims.reload(SVMF16::DIMS4_S16_ID,mgr,nb);
- ref.reload(SVMF16::REF4_S32_ID,mgr,nb);
- }
- break;
- #if 0
- case SVMF16::TEST_SVM_RBF_PREDICT_F16_5:
- {
-
- samples.reload(SVMF16::SAMPLES5_F16_ID,mgr,nb);
- params.reload(SVMF16::PARAMS5_F16_ID,mgr,nb);
- dims.reload(SVMF16::DIMS5_S16_ID,mgr,nb);
- ref.reload(SVMF16::REF5_S32_ID,mgr,nb);
- }
- break;
- #endif
- }
-
-
- const int16_t *dimsp = dims.ptr();
- const float16_t *paramsp = params.ptr();
-
- kind = dimsp[0];
-
- this->classes[0] = dimsp[1];
- this->classes[1] = dimsp[2];
- this->nbTestSamples=dimsp[3];
- this->vecDim = dimsp[4];
- this->nbSupportVectors = dimsp[5];
- this->intercept=paramsp[this->vecDim*this->nbSupportVectors + this->nbSupportVectors];
- this->supportVectors=paramsp;
- this->dualCoefs=paramsp + (this->vecDim*this->nbSupportVectors);
- switch(kind)
- {
-
- case SVMF16::POLY:
- this->degree = dimsp[6];
- this->coef0 =paramsp[this->vecDim*this->nbSupportVectors + this->nbSupportVectors + 1] ;
- this->gamma=paramsp[this->vecDim*this->nbSupportVectors + this->nbSupportVectors + 2];
- break;
- case SVMF16::RBF:
- this->gamma=paramsp[this->vecDim*this->nbSupportVectors + this->nbSupportVectors + 1];
- break;
- case SVMF16::SIGMOID:
- this->coef0 =paramsp[this->vecDim*this->nbSupportVectors + this->nbSupportVectors + 1] ;
- this->gamma=paramsp[this->vecDim*this->nbSupportVectors + this->nbSupportVectors + 2];
- break;
- }
-
- switch(id)
- {
- case SVMF16::TEST_SVM_LINEAR_PREDICT_F16_1:
- //case SVMF16::TEST_SVM_RBF_PREDICT_F16_5:
- {
-
- arm_svm_linear_init_f16(&linear,
- this->nbSupportVectors,
- this->vecDim,
- this->intercept,
- this->dualCoefs,
- this->supportVectors,
- this->classes);
- }
- break;
- case SVMF16::TEST_SVM_POLYNOMIAL_PREDICT_F16_2:
- {
-
- arm_svm_polynomial_init_f16(&poly,
- this->nbSupportVectors,
- this->vecDim,
- this->intercept,
- this->dualCoefs,
- this->supportVectors,
- this->classes,
- this->degree,
- this->coef0,
- this->gamma
- );
- }
- break;
- case SVMF16::TEST_SVM_RBF_PREDICT_F16_3:
- {
-
- arm_svm_rbf_init_f16(&rbf,
- this->nbSupportVectors,
- this->vecDim,
- this->intercept,
- this->dualCoefs,
- this->supportVectors,
- this->classes,
- this->gamma
- );
- }
- break;
- case SVMF16::TEST_SVM_SIGMOID_PREDICT_F16_4:
- {
-
- arm_svm_sigmoid_init_f16(&sigmoid,
- this->nbSupportVectors,
- this->vecDim,
- this->intercept,
- this->dualCoefs,
- this->supportVectors,
- this->classes,
- this->coef0,
- this->gamma
- );
- }
- break;
- }
- output.create(ref.nbSamples(),SVMF16::OUT_S32_ID,mgr);
-
- }
- void SVMF16::tearDown(Testing::testID_t id,Client::PatternMgr *mgr)
- {
- (void)id;
- output.dump(mgr);
- }
|