26 int main(
int argc,
char *argv[]) {
27 using namespace kaldi;
31 "Trains a model using Logistic Regression with L-BFGS from\n" 32 "a set of vectors. The class labels in <classes-rspecifier>\n" 33 "must be a set of integers such that there are no gaps in \n" 34 "its range and the smallest label must be 0.\n" 35 "Usage: logistic-regression-train <vector-rspecifier>\n" 36 "<classes-rspecifier> <model-out>\n";
43 po.
Register(
"binary", &binary,
"Write output in binary mode");
51 std::string vector_rspecifier = po.
GetArg(1),
52 class_rspecifier = po.
GetArg(2),
58 std::vector<int32> ys;
59 std::vector<std::string> utt_ids;
60 std::vector<Vector<BaseFloat> > vectors;
62 int32 num_utt_done = 0, num_utt_err = 0;
64 int32 num_classes = 0;
65 for (; !class_reader.
Done(); class_reader.
Next()) {
66 std::string utt = class_reader.
Key();
67 int32 class_label = class_reader.
Value();
68 if (!vector_reader.
HasKey(utt)) {
69 KALDI_WARN <<
"No vector for utterance " << utt;
72 ys.push_back(class_label);
74 vectors.push_back(vector);
79 if (class_label > num_classes) {
80 num_classes = class_label;
90 KALDI_LOG <<
"Retrieved " << num_utt_done <<
" vectors with " 91 << num_utt_err <<
" missing. " 92 <<
"There were " << num_classes <<
" class labels.";
94 if (num_utt_done == 0)
95 KALDI_ERR <<
"No vectors processed. Unable to train.";
98 for (
int i = 0;
i < vectors.size();
i++) {
99 xs.
Row(
i).CopyFromVec(vectors[
i]);
104 classifier.
Train(xs, ys, config);
108 }
catch(
const std::exception &e) {
109 std::cerr << e.what();
This code computes Goodness of Pronunciation (GOP) and extracts phone-level pronunciation feature for...
int main(int argc, char *argv[])
void PrintUsage(bool print_command_line=false)
Prints the usage documentation [provided in the constructor].
void Train(const Matrix< BaseFloat > &xs, const std::vector< int32 > &ys, const LogisticRegressionConfig &conf)
void Register(const std::string &name, bool *ptr, const std::string &doc)
Allows random access to a collection of objects in an archive or script file; see The Table concept...
The class ParseOptions is for parsing command-line options; see Parsing command-line options for more...
const SubVector< Real > Row(MatrixIndexT i) const
Return specific row of matrix [const].
const T & Value(const std::string &key)
A templated class for reading objects sequentially from an archive or script file; see The Table conc...
int Read(int argc, const char *const *argv)
Parses the command line options and fills the ParseOptions-registered variables.
std::string GetArg(int param) const
Returns one of the positional parameters; 1-based indexing for argc/argv compatibility.
bool HasKey(const std::string &key)
void Register(OptionsItf *opts)
int NumArgs() const
Number of positional parameters (c.f. argc-1).
A class representing a vector.
void WriteKaldiObject(const C &c, const std::string &filename, bool binary)