template class xf::data_analytics::classification::logisticRegressionPredict¶
#include "logisticRegression.hpp"
Overview¶
linear least square regression predict
Parameters:
| MType | datatype of regression, support double and float | 
| D | Number of features that processed each cycle | 
| DDepth | DDepth * D is max feature numbers supported. | 
| K | Number of weight vectors that processed each cycle | 
| KDepth | KDepth * K is max weight vectors supported. | 
| RAMWeight | Use which kind of RAM to store weight, could be LUTRAM, BRAM or URAM. | 
| RAMIntercept | Use which kind of RAM to store intercept, could be LUTRAM, BRAM or URAM. | 
template < typename MType, int D, int DDepth, int K, int KDepth, RAMType RAMWeight, RAMType RAMIntercept > class logisticRegressionPredict // fields static const int marginDepth sl2 <MType, D, DDepth, K, KDepth,&funcMul <MType>,&funcSum <MType>,&funcAssign <MType>, AdditionLatency <MType>::value, RAMWeight, RAMIntercept> marginProcessor pickMaxProcess <MType, K> pickProcessor
Methods¶
pickFromK¶
void pickFromK ( MType margin [K], ap_uint <32> counter, ap_uint <32> ws, MType& maxMargin, ap_uint <32>& maxIndex )
pick best weight vector for classification from K vectors
Parameters:
| margin | K margins generate by K weight vectors. | 
| counter | start index of this K margins in all margins. | 
| ws | number of margins | 
| maxMargin | max of K margins. | 
| maxIndex | which index does max margin sits. | 
pick¶
void pick ( hls::stream <MType> marginStrm [K], hls::stream <bool>& eMarginStrm, hls::stream <ap_uint <32>>& retStrm, hls::stream <bool>& eRetStrm, ap_uint <32> ws )
pick best weight vector for classification
Parameters:
| marginStrm | margin stream. To get a vector of L margins, marginStrm will be read (L + K - 1) / D times. Margin 0 to K-1 will be read from marginStrm[0] to marginStrm[D-1] at the first time. Then margin D to 2*D - 1. The last round will readin fake data if L is not divisiable by K. These data won’t be used, just to allign K streams. | 
| eMarginStrm | Endflag of marginStrm. | 
| retStrm | result stream of classification. | 
| eRetStrm | Endflag of retStrm. | 
| ws | number of weight vectors used. | 
predict¶
void predict ( hls::stream <MType> opStrm [D], hls::stream <bool>& eOpStrm, ap_uint <32> cols, ap_uint <32> classNum, hls::stream <ap_uint <32>>& retStrm, hls::stream <bool>& eRetStrm )
classification function of logistic regression
Parameters:
| opStrm | feature input streams. To get a vector of L features, opStrm will be read (L + D - 1) / D times. Feature 0 to D-1 will be read from opStrm[0] to opStrm[D-1] at the first time. Then feature D to 2*D - 1. The last round will readin fake data if L is not divisiable by D. These data won’t be used, just to allign D streams. | 
| eOpStrm | End flag of opStrm. | 
| cols | Feature numbers | 
| classNum | Number of classes. | 
| retStrm | result stream of classification. | 
| eRetStrm | Endflag of retStrm. | 
setWeight¶
void setWeight ( MType inputW [K][D][KDepth *DDepth], ap_uint <32> cols, ap_uint <32> classNum )
set up weight parameters for prediction
Parameters:
| inputW | weight | 
| cols | Effective weight numbers | 
| classNum | number of classes. | 
setIntercept¶
void setIntercept ( MType inputI [K][KDepth], ap_uint <32> classNum )
set up intercept parameters for prediction
Parameters:
| inputI | intercept, should be set to zero if don’t needed. | 
| classNum | number of classes. |