65 using namespace kaldi;
68 typedef kaldi::int64 int64;
71 "Read input nnet discriminative training examples, and compute the " 72 "output for each one. This program is similar to " 73 "nnet3-compute-from-egs, but works with discriminative egs. \n" 74 "If --apply-exp=true, apply the Exp() function to the output before writing\n" 76 "Note: This program uses only the input; it does not do forward-backward\n" 77 "over the lattice. See nnet3-discriminative-compute-objf for that.\n" 79 "Usage: nnet3-discriminative-compute-from-egs [options] <raw-nnet-in> <training-examples-in> <matrices-out>\n" 81 "nnet3-discriminative-compute-from-egs --apply-exp=true 0.raw ark:1.degs ark:- | matrix-sum-rows ark:- ... \n" 82 "See also: nnet3-compute nnet3-compute-from-egs\n";
84 bool binary_write =
true,
86 std::string use_gpu =
"yes";
89 po.Register(
"binary", &binary_write,
"Write output in binary mode");
90 po.Register(
"apply-exp", &apply_exp,
"If true, apply exp function to " 92 po.Register(
"use-gpu", &use_gpu,
93 "yes|no|optional|wait, only has effect if compiled with CUDA");
97 if (po.NumArgs() != 3) {
103 CuDevice::Instantiate().SelectGpuId(use_gpu);
106 std::string nnet_rxfilename = po.GetArg(1),
107 examples_rspecifier = po.GetArg(2),
108 matrix_wspecifier = po.GetArg(3);
113 NnetComputerFromEg computer(nnet);
120 for (; !example_reader.Done(); example_reader.Next(), num_egs++) {
126 for (int32
i = 0;
i < disc_eg.
outputs.size();
i++) {
133 computer.Compute(eg, &output);
137 matrix_writer.Write(example_reader.Key(), output);
140 CuDevice::Instantiate().PrintProfile();
142 KALDI_LOG <<
"Processed " << num_egs <<
" examples.";
144 }
catch(
const std::exception &e) {
145 std::cerr << e.what() <<
'\n';
NnetExample is the input data and corresponding label (or labels) for one or more frames of input...
This code computes Goodness of Pronunciation (GOP) and extracts phone-level pronunciation feature for...
A templated class for writing objects to an archive or script file; see The Table concept...
std::vector< Index > indexes
"indexes" is a vector the same length as features.NumRows(), explaining the meaning of each row of th...
void ReadKaldiObject(const std::string &filename, Matrix< float > *m)
The class ParseOptions is for parsing command-line options; see Parsing command-line options for more...
A templated class for reading objects sequentially from an archive or script file; see The Table conc...
#define KALDI_ASSERT(cond)
MatrixIndexT NumRows() const
Returns number of rows (or zero for empty matrix).
std::vector< NnetIo > inputs
'inputs' contains the input to the network– normally just it has just one element called "input"...
std::vector< NnetDiscriminativeSupervision > outputs
'outputs' contains the sequence output supervision.
std::string name
the name of the input in the neural net; in simple setups it will just be "input".
std::vector< NnetIo > io
"io" contains the input and output.
NnetDiscriminativeExample is like NnetExample, but specialized for sequence training.