Base Evaluator¶
Evaluator¶
- 
class 
paddle::Evaluator¶ Base class for Evaluator Evaluating the performance of a model is very important. It indicates how successful the scores(predictions) of a datasets has been by a trained model.
Subclassed by paddle::AucEvaluator, paddle::ChunkEvaluator, paddle::ClassificationErrorEvaluator, paddle::ColumnSumEvaluator, paddle::CombinedEvaluator, paddle::CTCErrorEvaluator, paddle::DummyEvaluator, paddle::GradientPrinter, paddle::MaxFramePrinter, paddle::MaxIdPrinter, paddle::MultiCombinedEvaluator, paddle::PnpairEvaluator, paddle::PrecisionRecallEvaluator, paddle::RankAucEvaluator, paddle::SequenceTextPrinter, paddle::SumEvaluator, paddle::ValuePrinter
Public Functions
- 
Evaluator()¶ 
- 
virtual 
~Evaluator()¶ 
- 
virtual void 
init(const EvaluatorConfig &config)¶ 
- 
virtual void 
start()¶ start to evaluate some data
- 
virtual void 
eval(const NeuralNetwork &nn)¶ Process a batch of data.
- 
virtual real 
evalImp(std::vector<Argument> &arguments) = 0¶ Process a batch of data.
- Return
 - the score for the batch if it make sense to sum the score across batches.
 - Note
 - Otherwise evaluator should return 0 and override finish() and printStats() to do the right calculation.
 
- 
virtual void 
updateSamplesNum(const std::vector<Argument> &arguments)¶ Update the number of processed samples.
- 
virtual void 
distributeEval(ParameterClient2 *client)¶ finish() should be called before distributeEval
- 
void 
mergeResultsOfAllClients(ParameterClient2 *client)¶ 
- 
virtual void 
finish()¶ finish the evaluation.
- 
 
Utils¶
SumEvaluator¶
- 
class 
paddle::SumEvaluator¶ sum Evaluator Calculate the sum of output or label
The config file api is sum_evaluator.
Inherits from paddle::Evaluator
Public Functions
- 
SumEvaluator()¶ 
- 
virtual void 
updateSamplesNum(const std::vector<Argument> &arguments)¶ Update the number of processed samples.
- 
virtual real 
evalImp(std::vector<Argument> &arguments)¶ Process a batch of data.
- Return
 - the score for the batch if it make sense to sum the score across batches.
 - Note
 - Otherwise evaluator should return 0 and override finish() and printStats() to do the right calculation.
 
- 
virtual void 
distributeEval(ParameterClient2 *client)¶ finish() should be called before distributeEval
- 
 
ColumnSumEvaluator¶
- 
class 
paddle::ColumnSumEvaluator¶ column sum Evaluator
The config file api is column_sum_evaluator.
- Note
 - column sum for the colIdx-th column *
- colIdx = 0: the 0-th column.
 - colIdx > 0: the colIdx-th column.
 - colIdx < 0: the last colIdx-th column.
 
 
Inherits from paddle::Evaluator
Public Functions
- 
ColumnSumEvaluator(int32_t colIdx)¶ 
- 
virtual void 
start()¶ start to evaluate some data
- 
virtual void 
updateSamplesNum(const std::vector<Argument> &arguments)¶ Update the number of processed samples.
- 
virtual real 
evalImp(std::vector<Argument> &arguments)¶ Process a batch of data.
- Return
 - the score for the batch if it make sense to sum the score across batches.
 - Note
 - Otherwise evaluator should return 0 and override finish() and printStats() to do the right calculation.
 
- 
virtual void 
printStats(std::ostream &os)¶ print the statistics of evaluate result
- Note
 - finish() should be called before printStats
 
- 
virtual void 
distributeEval(ParameterClient2 *client)¶ finish() should be called before distributeEval
Classification¶
ClassificationErrorEvaluator¶
- 
class 
paddle::ClassificationErrorEvaluator¶ classification error Evaluator
The config file api is classification_error_evaluator.
Inherits from paddle::Evaluator
Subclassed by paddle::ClassificationErrorPrinter, paddle::SequenceClassificationErrorEvaluator
Public Functions
- 
virtual void 
updateSamplesNum(const std::vector<Argument> &arguments)¶ Update the number of processed samples.
- 
virtual real 
evalImp(std::vector<Argument> &arguments)¶ Process a batch of data.
- Return
 - the score for the batch if it make sense to sum the score across batches.
 - Note
 - Otherwise evaluator should return 0 and override finish() and printStats() to do the right calculation.
 
- 
virtual void 
distributeEval(ParameterClient2 *client)¶ finish() should be called before distributeEval
- 
virtual void 
 
SequenceClassificationErrorEvaluator¶
- 
class 
paddle::SequenceClassificationErrorEvaluator¶ sequence classification error Evaluator
- Note
 - sequence level classification error stats, if any frame in one sequence has error, the sequence is error
 
Inherits from paddle::ClassificationErrorEvaluator
Public Functions
- 
virtual void 
updateSamplesNum(const std::vector<Argument> &arguments)¶ Update the number of processed samples.
- 
virtual real 
evalImp(std::vector<Argument> &arguments)¶ Process a batch of data.
- Return
 - the score for the batch if it make sense to sum the score across batches.
 - Note
 - Otherwise evaluator should return 0 and override finish() and printStats() to do the right calculation.
 
- 
virtual void 
distributeEval(ParameterClient2 *client)¶ finish() should be called before distributeEval
AucEvaluator¶
- 
class 
paddle::AucEvaluator¶ evaluate AUC using colIdx-th column as prediction. The AUC(Area Under the Curve) is a common evaluation metric for binary classification problems. It computes the area under the receiver operating characteristic(ROC) curve.
- colIdx = 0: the 0-th column.
 - colIdx > 0: the colIdx-th column.
 - colIdx < 0: the last colIdx-th column.
 
- Note
 - colIdx-th column
 
The config file api is auc_evaluator.
Inherits from paddle::Evaluator
Public Functions
- 
AucEvaluator(int32_t colIdx)¶ 
- 
virtual void 
start()¶ start to evaluate some data
- 
virtual real 
evalImp(std::vector<Argument> &arguments)¶ Process a batch of data.
- Return
 - the score for the batch if it make sense to sum the score across batches.
 - Note
 - Otherwise evaluator should return 0 and override finish() and printStats() to do the right calculation.
 
- 
virtual void 
printStats(std::ostream &os)¶ print the statistics of evaluate result
- Note
 - finish() should be called before printStats
 
- 
virtual void 
distributeEval(ParameterClient2 *client)¶ finish() should be called before distributeEval
PrecisionRecallEvaluator¶
- 
class 
paddle::PrecisionRecallEvaluator¶ precision, recall and f1 score Evaluator
\[\begin{split} precision = \frac{tp}{tp+tn} \\ recall=\frac{tp}{tp+fn} \\ f1=2*\frac{precsion*recall}{precision+recall} \end{split}\]The config file api is precision_recall_evaluator.
Inherits from paddle::Evaluator
Public Functions
- 
PrecisionRecallEvaluator()¶ 
- 
virtual void 
start()¶ start to evaluate some data
- 
virtual real 
evalImp(std::vector<Argument> &arguments)¶ Process a batch of data.
- Return
 - the score for the batch if it make sense to sum the score across batches.
 - Note
 - Otherwise evaluator should return 0 and override finish() and printStats() to do the right calculation.
 
- 
virtual void 
printStats(std::ostream &os)¶ print the statistics of evaluate result
- Note
 - finish() should be called before printStats
 
- 
virtual void 
distributeEval(ParameterClient2 *client)¶ finish() should be called before distributeEval
- 
 
ChunkEvaluator¶
- 
class 
paddle::ChunkEvaluator¶ Chunk evaluator is used to evaluate segment labelling accuracy for a sequence. It calculates the chunk detection F1 score.
A chunk is correctly detected if its beginning, end and type are correct. Other chunk type is ignored. For each label in the label sequence, we have
tagType = label % numTagType chunkType = label / numTagType otherChunkType = numChunkTypes
The total number of different labels is numTagType*numChunkTypes+1 We support 4 labelling scheme The tag type for each of the scheme is shown as follows:
Scheme Begin Inside End Single plain 0 - - - IOB 0 1 - - IOE - 0 1 - IOBES 0 1 2 3
‘plain’ means the whole chunk must contain exactly the same chunk label.
Inherits from paddle::Evaluator
Public Functions
- 
virtual void 
init(const EvaluatorConfig &config)¶ 
- 
virtual void 
start()¶ start to evaluate some data
- 
virtual void 
printStats(std::ostream &os)¶ print the statistics of evaluate result
- Note
 - finish() should be called before printStats
 
- 
virtual void 
distributeEval(ParameterClient2 *client)¶ finish() should be called before distributeEval
- 
virtual real 
evalImp(std::vector<Argument> &arguments)¶ Process a batch of data.
- Return
 - the score for the batch if it make sense to sum the score across batches.
 - Note
 - Otherwise evaluator should return 0 and override finish() and printStats() to do the right calculation.
 
- 
void 
eval1(int *output, int *label, int length)¶ 
- 
bool 
isChunkEnd(int prevTag, int prevType, int tag, int type)¶ 
- 
bool 
isChunkBegin(int prevTag, int prevType, int tag, int type)¶ 
- 
virtual void 
 
CTCEvaluator¶
- 
class 
paddle::CTCErrorEvaluator¶ calculate sequence-to-sequence edit distance
Inherits from paddle::Evaluator
Public Functions
- 
CTCErrorEvaluator()¶ 
- 
virtual real 
evalImp(std::vector<Argument> &arguments)¶ Process a batch of data.
- Return
 - the score for the batch if it make sense to sum the score across batches.
 - Note
 - Otherwise evaluator should return 0 and override finish() and printStats() to do the right calculation.
 
- 
virtual void 
eval(const NeuralNetwork &nn)¶ Process a batch of data.
- 
virtual void 
start()¶ start to evaluate some data
- 
virtual void 
printStats(std::ostream &os)¶ print the statistics of evaluate result
- Note
 - finish() should be called before printStats
 
- 
virtual void 
distributeEval(ParameterClient2 *client)¶ finish() should be called before distributeEval
- 
 
Rank¶
PnpairEvaluator¶
- 
class 
paddle::PnpairEvaluator¶ Inherits from paddle::Evaluator
Public Functions
- 
PnpairEvaluator()¶ 
- 
virtual void 
start()¶ start to evaluate some data
- 
virtual real 
evalImp(std::vector<Argument> &arguments)¶ Process a batch of data.
- Return
 - the score for the batch if it make sense to sum the score across batches.
 - Note
 - Otherwise evaluator should return 0 and override finish() and printStats() to do the right calculation.
 
- 
void 
printPredictResults()¶ 
- 
void 
stat(size_t start, size_t end, PredictionResult *answers, double &pos, double &neg, double &spe)¶ 
- 
void 
calc(std::vector<PredictionResult> &predictArray)¶ 
- 
virtual void 
finish()¶ finish the evaluation.
- 
virtual void 
printStats(std::ostream &os)¶ print the statistics of evaluate result
- Note
 - finish() should be called before printStats
 
- 
virtual void 
distributeEval(ParameterClient2 *client)¶ finish() should be called before distributeEval
Public Members
- 
std::vector<PredictionResult> 
predictArray_¶ 
- 
 
AucEvaluator¶
- 
class 
paddle::RankAucEvaluator¶ RankAucEvaluator calculates the AUC of each list (i.e., titles under the same query), and averages them. Each list should be organized as a sequence. The inputs of this evaluator is [output, click, pv]. If pv is not provided, it will be set to 1. The types of click and pv are dense value.
Inherits from paddle::Evaluator
Public Functions
- 
virtual void 
start()¶ start to evaluate some data
- 
virtual void 
updateSamplesNum(const std::vector<Argument> &arguments)¶ Update the number of processed samples.
- 
virtual real 
evalImp(std::vector<Argument> &arguments)¶ Process a batch of data.
- Return
 - the score for the batch if it make sense to sum the score across batches.
 - Note
 - Otherwise evaluator should return 0 and override finish() and printStats() to do the right calculation.
 
- 
virtual void 
distributeEval(ParameterClient2 *client)¶ finish() should be called before distributeEval
- 
virtual void 
 
Printer¶
ValuePrinter¶
- 
class 
paddle::ValuePrinter¶ print value of each layer.
The config file api is value_printer_evaluator.
Inherits from paddle::Evaluator
Public Functions
- 
ValuePrinter()¶ 
- 
virtual void 
eval(const NeuralNetwork &nn)¶ Process a batch of data.
- 
virtual void 
updateSamplesNum(const std::vector<Argument> &arguments)¶ Update the number of processed samples.
- 
virtual real 
evalImp(std::vector<Argument> &arguments)¶ Process a batch of data.
- Return
 - the score for the batch if it make sense to sum the score across batches.
 - Note
 - Otherwise evaluator should return 0 and override finish() and printStats() to do the right calculation.
 
- 
 
GradientPrinter¶
- 
class 
paddle::GradientPrinter¶ print gradient of each layer.
The config file api is gradient_printer_evaluator.
Inherits from paddle::Evaluator
Public Functions
- 
GradientPrinter()¶ 
- 
virtual void 
eval(const NeuralNetwork &nn)¶ Process a batch of data.
- 
virtual void 
updateSamplesNum(const std::vector<Argument> &arguments)¶ Update the number of processed samples.
- 
virtual real 
evalImp(std::vector<Argument> &arguments)¶ Process a batch of data.
- Return
 - the score for the batch if it make sense to sum the score across batches.
 - Note
 - Otherwise evaluator should return 0 and override finish() and printStats() to do the right calculation.
 
- 
 
MaxIdPrinter¶
- 
class 
paddle::MaxIdPrinter¶ print row max id vctor of each layer
The config file api is maxid_printer_evaluator.
Inherits from paddle::Evaluator
Public Functions
- 
MaxIdPrinter()¶ 
- 
virtual void 
eval(const NeuralNetwork &nn)¶ Process a batch of data.
- 
virtual void 
updateSamplesNum(const std::vector<Argument> &arguments)¶ Update the number of processed samples.
- 
virtual real 
evalImp(std::vector<Argument> &arguments)¶ Process a batch of data.
- Return
 - the score for the batch if it make sense to sum the score across batches.
 - Note
 - Otherwise evaluator should return 0 and override finish() and printStats() to do the right calculation.
 
- 
 
MaxFramePrinter¶
- 
class 
paddle::MaxFramePrinter¶ print sequence max frames of each layer
The config file api is maxframe_printer_evaluator.
Inherits from paddle::Evaluator
Public Functions
- 
MaxFramePrinter()¶ 
- 
virtual void 
eval(const NeuralNetwork &nn)¶ Process a batch of data.
- 
virtual void 
updateSamplesNum(const std::vector<Argument> &arguments)¶ Update the number of processed samples.
- 
virtual real 
evalImp(std::vector<Argument> &arguments)¶ Process a batch of data.
- Return
 - the score for the batch if it make sense to sum the score across batches.
 - Note
 - Otherwise evaluator should return 0 and override finish() and printStats() to do the right calculation.
 
- 
 
SequenceTextPrinter¶
- 
class 
paddle::SequenceTextPrinter¶ print text according to index matrix and a dictionary.
There can be multiple input to this layer:
- If there is only one input, the input must be a matrix containing the sequence of indices;
 - If there are more than one input, the first input should be ids, and are interpreted as sample ids.
 
The output format will be:
- sequence without sub-sequence, and there is probability.
 
id \t prob space_seperated_tokens_from_dictionary_according_to_seq
- sequence without sub-sequence, and there is not probability.
 
id \t space_seperated_tokens_from_dictionary_according_to_seq
- sequence with sub-sequence, and there is not probability.
 
id \t space_seperated_tokens_from_dictionary_according_to_sub_seq \t \t space_seperated_tokens_from_dictionary_according_to_sub_seq ...
Typically SequenceTextPrinter layer takes output of maxid or RecurrentGroup with maxid (when generating) as an input.
The config file api is seqtext_printer_evaluator.
Inherits from paddle::Evaluator
Public Functions
- 
SequenceTextPrinter()¶ 
- 
virtual void 
init(const EvaluatorConfig &config)¶ 
- 
virtual void 
updateSamplesNum(const std::vector<Argument> &arguments)¶ Update the number of processed samples.
- 
virtual real 
evalImp(std::vector<Argument> &arguments)¶ Process a batch of data.
- Return
 - the score for the batch if it make sense to sum the score across batches.
 - Note
 - Otherwise evaluator should return 0 and override finish() and printStats() to do the right calculation.
 
ClassificationErrorPrinter¶
- 
class 
paddle::ClassificationErrorPrinter¶ print classification error.
The config file api is classification_error_printer_evaluator.
Inherits from paddle::ClassificationErrorEvaluator
Public Functions
- 
virtual void 
updateSamplesNum(const std::vector<Argument> &arguments)¶ Update the number of processed samples.
- 
virtual real 
evalImp(std::vector<Argument> &arguments)¶ Process a batch of data.
- Return
 - the score for the batch if it make sense to sum the score across batches.
 - Note
 - Otherwise evaluator should return 0 and override finish() and printStats() to do the right calculation.
 
- 
virtual void