namespace classification¶
// namespaces namespace xf::data_analytics::classification::internal // classes template < typename MType, int D, int DDepth, int K, int KDepth, RAMType RAMWeight, RAMType RAMIntercept > class logisticRegressionPredict
decisionTreePredict¶
#include "xf_DataAnalytics/classification/decision_tree_predict.hpp"
template < typename MType, unsigned int WD, unsigned int MAX_FEA_NUM, unsigned int MAX_TREE_DEPTH = 20, unsigned MAX_CAT_BITS = 8 > void decisionTreePredict ( hls::stream <ap_uint <WD>> dstrm_batch [MAX_FEA_NUM], hls::stream <bool>& estrm_batch, hls::stream <ap_uint <512>>& treeStrm, hls::stream <bool>& treeTag, hls::stream <ap_uint <MAX_CAT_BITS>>& predictionsStrm, hls::stream <bool>& predictionsTag )
decisionTreePredict, Top function of Decision Tree Predict.
This function first loads decision tree (the corresponding function : getTree) from treeStrm Then, read sample one by one from dstrm_batch, and output its category id into predictionsStrm streams
Note that the treeStrm is a 512-bit stream, and each 512 bits include two nodes. In each 512-bit confirm the range(0,71) is node[i].nodeInfo and range(256,327) is node[i+1].nodeInfo the range(192,255) is node[i].threshold and range(448,511) is node[i+1].threshold For detailed info of Node struct, can refer “decision_tree.hpp” Samples in input sample stream should be converted into ap_uint<WD> from MType
Parameters:
MType | The data type of sample |
WD | The width of data type MType, can get by sizeof(MType) |
MAX_FEA_NUM | The max feature num function can support |
MAX_TREE_DEPTH | The max tree depth function can support |
MAX_CAT_BITS | The category max bit number |
dstrm_batch | Input data streams of ap_uint<WD> |
estrm_batch | End flag stream for input data |
treeStrm | Decision tree streams |
treeTag | End flag stream for decision tree nodes |
predictionsStrm | Output data streams |
predictionsTagStrm | End flag stream for output |
axiVarColToStreams¶
#include "xf_DataAnalytics/classification/decision_tree_train.hpp"
template < int _BurstLen = 32, int _WAxi = 512, int _WData = 64 > void axiVarColToStreams ( ap_uint <_WAxi>* ddr, const ap_uint <32> offset, const ap_uint <32> rows, ap_uint <32> cols, hls::stream <ap_uint <_WData>> dataStrm [_WAxi/_WData], hls::stream <bool>& eDataStrm )
Loading table from AXI master to stream. Table should be row based storage of identical datawidth.
Parameters:
_BurstLen | burst length of AXI buffer, default is 32. |
_WAxi | width of AXI port, must be multiple of datawidth, default is 512. |
_WData | datawith, default is 64. |
ddr | input AXI port |
offset | offset(in _WAxi bits) to load table. |
rows | Row number of table |
cols | Column number of table Output streams of _WAxi/_WData channels end flag of output stream. |
naiveBayesTrain¶
#include "xf_DataAnalytics/classification/naive_bayes.hpp"
template < int DT_WIDTH = 32, int WL = 3, typename DT = unsigned int > void naiveBayesTrain ( const int num_of_class, const int num_of_term, hls::stream <ap_uint <64>> i_data_strm [1<< WL], hls::stream <bool> i_e_strm [1<< WL], hls::stream <int>& o_terms_strm, hls::stream <ap_uint <64>> o_data0_strm [1<< WL], hls::stream <ap_uint <64>> o_data1_strm [1<< WL] )
naiveBayesTrain, top function of multinomial Naive Bayes Training.
This function will firstly load train dataset from the i_data_strm, then counte the frequency for each hit term. After scaning all sample, the likehood probability matrix and prior probability will be output from two independent stream
Parameters:
DT_WIDTH | the width of type DT, in bits |
WL | the width of bit to enable dispatcher, only 3 is supported so far |
DT | the data type of internal counter for terms, can be 32/64-bit integer, float or double |
num_of_class | the number of class in sample dataset, should be exactly same with real dataset |
num_of_term | the number of terms, must be larger than the number of feature, and num_of_class * num_of_term <= (1 << (20-WL)) must be satisfied. |
i_data_strm | input data stream of ap_uint<64> in multiple channel |
i_e_strm | end flag stream for each input data channel |
o_terms_strm | the output number of statistic feature |
o_data0_strm | the output likehood matrix |
o_data1_strm | the output prior probablity vector |
naiveBayesPredict¶
#include "xf_DataAnalytics/classification/naive_bayes.hpp"
template < int CH_NM, int GRP_NM > void naiveBayesPredict ( const int num_of_class, const int num_of_term, hls::stream <ap_uint <64>>& i_theta_strm, hls::stream <ap_uint <64>>& i_prior_strm, hls::stream <ap_uint <32>> i_data_strm [CH_NM], hls::stream <bool>& i_e_strm, hls::stream <ap_uint <10>>& o_class_strm, hls::stream <bool>& o_e_strm )
naiveBayesPredict, top function of multinomial Naive Bayes Prediction
The function will firstly load the train model into on-chip memory, and calculate the classfication results for each sample using argmax function.
Parameters:
CH_NM | the number of channel for input sample data, should be power of 2 |
GRP_NM | the unroll factor for handling the classes simultaneously, must be power of 2 in 1~256 |
num_of_term | the number of class, should be exactly same with the input dataset |
num_of_term | the number of feature, should be exactly same with the input dataset |
i_theta_strm | the input likehood probability stream, [num_of_class][num_of_term] |
i_prior_strm | the input prior probability stream, [num_of_class] |
i_data_strm | the input of test data stream |
i_e_strm | end flag stream for i_data_strm |
o_class_strm | the prediction result for each input sample |
o_e_strm | end flag stream for o_class_strm |
svmPredict¶
#include "xf_DataAnalytics/classification/svm_predict.hpp"
template < typename MType, unsigned WD, unsigned StreamN, unsigned SampleDepth > void svmPredict ( const int cols, hls::stream <MType> sample_strm [StreamN], hls::stream <bool>& e_sample_strm, hls::stream <ap_uint <512>>& weight_strm, hls::stream <bool>& eTag, hls::stream <ap_uint <1>>& predictionsStrm, hls::stream <bool>& predictionsTag )
svmPredict, Top function of svm Predict.
This function first loads weight (the corresponding function : getWeight) from weight_strm Then, read sample from sample_strm, and output its classification id into predictionsStrm streams
Parameters:
MType | The data type of sample |
WD | The width of data type MType, can get by sizeof(MType) |
StreamN | The stream number of input sample stream vector |
SampleDepth | stream depth number of one input sample |
cols | colum number of input data sample |
sample_strm | Input data streams of MType |
e_sample_strm | End flag stream for input data |
weight_strm | weight streams |
eTag | End flag stream for weight streams |
predictionsStrm | Output data streams |
predictionsTagStrm | End flag stream for output |