Xvector nnet
Training of Xvector nnet
Xvector nnet in Kaldi
Statistics Extraction Layer in Kaldi
Statistics Pooling Layer in Kaldi
Implementation in Kaldi
Construct specific ComputationRequest for Xvector
kaldi::nnet3::RunNnetComputation at nnet3bin/nnet3-xvector-compute.cc
44 output_spec.indexes.resize(1);
Rather than
kaldi::nnet3::DecodableNnetSimple::DoNnetComputation at nnet3/nnet-am-decodable-simple.cc
244 output_spec.indexes.resize(num_subsampled_frames);
Compile ComputationRequest, get NnetComputation
std::shared_ptr<const NnetComputation> computation = compiler_.Compile(request);
From output to input, build dependency once a layer
BuildGraphOneIter();
For each Cindex,add dependency
AddDependencies(cindex_id);
For Statistics*Component
component->GetInputIndexe(...);
Organize Data and Computation as a group of Cindexes, called step.
Optimize Computation
For each step Run NnetComputer:
kPropagate: component->Propagate(...)
kBackprop: component->Backprop(...)
Get output from NnetComputer:
computer.GetOutputDestructive("output", &cu_output);