Classes | |
class | DiscriminativeComputation |
struct | DiscriminativeObjectiveInfo |
struct | DiscriminativeOptions |
struct | DiscriminativeSupervision |
class | DiscriminativeSupervisionSplitter |
struct | SplitDiscriminativeSupervisionOptions |
Functions | |
void | MergeSupervision (const std::vector< const DiscriminativeSupervision * > &input, DiscriminativeSupervision *output_supervision) |
This function appends a list of supervision objects to create what will usually be a single such object, but if the weights and num-frames are not all the same it will only append Supervision objects where successive ones have the same weight and num-frames, and if 'compactify' is true. More... | |
void | ComputeDiscriminativeObjfAndDeriv (const DiscriminativeOptions &opts, const TransitionModel &tmodel, const CuVectorBase< BaseFloat > &log_priors, const DiscriminativeSupervision &supervision, const CuMatrixBase< BaseFloat > &nnet_output, DiscriminativeObjectiveInfo *stats, CuMatrixBase< BaseFloat > *nnet_output_deriv, CuMatrixBase< BaseFloat > *xent_output_deriv) |
This function does forward-backward on the numerator and denominator lattices and computes derivates wrt to the output for the specified objective function. More... | |
void ComputeDiscriminativeObjfAndDeriv | ( | const DiscriminativeOptions & | opts, |
const TransitionModel & | tmodel, | ||
const CuVectorBase< BaseFloat > & | log_priors, | ||
const DiscriminativeSupervision & | supervision, | ||
const CuMatrixBase< BaseFloat > & | nnet_output, | ||
DiscriminativeObjectiveInfo * | stats, | ||
CuMatrixBase< BaseFloat > * | nnet_output_deriv, | ||
CuMatrixBase< BaseFloat > * | xent_output_deriv | ||
) |
This function does forward-backward on the numerator and denominator lattices and computes derivates wrt to the output for the specified objective function.
[in] | opts | Struct containing options |
[in] | tmodel | Transition model |
[in] | log_priors | Vector of log-priors for pdfs |
[in] | supervision | The supervision object, containing the numerator and denominator paths. The denominator is always a lattice. The numerator is an alignment. |
[in] | nnet_output | The output of the neural net; dimension must equal ((supervision.num_sequences * supervision.frames_per_sequence) by tmodel.NumPdfs()). |
[out] | stats | Statistics accumulated during training such as the objective function and the total weight. |
[out] | xent_output_deriv | If non-NULL, then the xent objective derivative (which equals a posterior from the numerator forward-backward, scaled by the supervision weight) is written to here. This will be used in the cross-entropy regularization code. |
Definition at line 546 of file discriminative-training.cc.
References DiscriminativeComputation::Compute().
Referenced by DiscriminativeObjectiveInfo::AccumulateOutput(), NnetDiscriminativeComputeObjf::ProcessOutputs(), and NnetDiscriminativeTrainer::ProcessOutputs().
void MergeSupervision | ( | const std::vector< const DiscriminativeSupervision * > & | input, |
DiscriminativeSupervision * | output_supervision | ||
) |
This function appends a list of supervision objects to create what will usually be a single such object, but if the weights and num-frames are not all the same it will only append Supervision objects where successive ones have the same weight and num-frames, and if 'compactify' is true.
The normal use-case for this is when you are combining neural-net examples for training; appending them like this helps to simplify the training process.
Definition at line 402 of file discriminative-supervision.cc.
References DiscriminativeSupervision::Check(), DiscriminativeSupervision::den_lat, DiscriminativeSupervision::frames_per_sequence, rnnlm::i, KALDI_ASSERT, KALDI_ERR, DiscriminativeSupervision::num_ali, DiscriminativeSupervision::num_sequences, and DiscriminativeSupervision::weight.
Referenced by kaldi::nnet3::MergeSupervision().