Xvector nnet

Xvector in Kaldi nnet3

Training of Xvector nnet

Xvector in Kaldi nnet3

Xvector in Kaldi nnet3

Xvector nnet in Kaldi

   

Xvector in Kaldi nnet3

Statistics Extraction Layer in Kaldi

Xvector in Kaldi nnet3

Xvector in Kaldi nnet3

Xvector in Kaldi nnet3

Xvector in Kaldi nnet3

Xvector in Kaldi nnet3

Statistics Pooling Layer in Kaldi

Xvector in Kaldi nnet3

Xvector in Kaldi nnet3

Xvector in Kaldi nnet3

Xvector in Kaldi nnet3

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);

相关文章: