diff options
| author | redpony <redpony@ec762483-ff6d-05da-a07a-a48fb63a330f> | 2010-08-11 02:37:10 +0000 | 
|---|---|---|
| committer | redpony <redpony@ec762483-ff6d-05da-a07a-a48fb63a330f> | 2010-08-11 02:37:10 +0000 | 
| commit | 80686d4e567bae579ea39e009826a2de92cd4ace (patch) | |
| tree | c3c35fcba57dde423a248f38aa121ad197c79734 /decoder/weights.cc | |
| parent | 3c85c407c333899f6b4bc26632d312b8e568b638 (diff) | |
major refactor, break bad circular deps
git-svn-id: https://ws10smt.googlecode.com/svn/trunk@509 ec762483-ff6d-05da-a07a-a48fb63a330f
Diffstat (limited to 'decoder/weights.cc')
| -rw-r--r-- | decoder/weights.cc | 77 | 
1 files changed, 0 insertions, 77 deletions
diff --git a/decoder/weights.cc b/decoder/weights.cc deleted file mode 100644 index 84647585..00000000 --- a/decoder/weights.cc +++ /dev/null @@ -1,77 +0,0 @@ -#include "weights.h" - -#include <sstream> - -#include "fdict.h" -#include "filelib.h" - -using namespace std; - -void Weights::InitFromFile(const std::string& filename, vector<string>* feature_list) { -  cerr << "Reading weights from " << filename << endl; -  ReadFile in_file(filename); -  istream& in = *in_file.stream(); -  assert(in); -  int weight_count = 0; -  bool fl = false; -  while (in) { -    double val = 0; -    string buf; -    getline(in, buf); -    if (buf.size() == 0) continue; -    if (buf[0] == '#') continue; -    for (int i = 0; i < buf.size(); ++i) -      if (buf[i] == '=') buf[i] = ' '; -    int start = 0; -    while(start < buf.size() && buf[start] == ' ') ++start; -    int end = 0; -    while(end < buf.size() && buf[end] != ' ') ++end; -    int fid = FD::Convert(buf.substr(start, end - start)); -    while(end < buf.size() && buf[end] == ' ') ++end; -    val = strtod(&buf.c_str()[end], NULL); -    if (isnan(val)) { -      cerr << FD::Convert(fid) << " has weight NaN!\n"; -      abort(); -    } -    if (wv_.size() <= fid) -      wv_.resize(fid + 1); -    wv_[fid] = val; -    if (feature_list) { feature_list->push_back(FD::Convert(fid)); } -    ++weight_count; -    if (weight_count %   50000 == 0) { cerr << '.' << flush; fl = true; } -    if (weight_count % 2000000 == 0) { cerr << " [" << weight_count << "]\n"; fl = false; } -  } -  if (fl) { cerr << endl; } -  cerr << "Loaded " << weight_count << " feature weights\n"; -} - -void Weights::WriteToFile(const std::string& fname, bool hide_zero_value_features) const { -  WriteFile out(fname); -  ostream& o = *out.stream(); -  assert(o); -  o.precision(17); -  const int num_feats = FD::NumFeats(); -  for (int i = 1; i < num_feats; ++i) { -    const double val = (i < wv_.size() ? wv_[i] : 0.0); -    if (hide_zero_value_features && val == 0.0) continue; -    o << FD::Convert(i) << ' ' << val << endl; -  } -} - -void Weights::InitVector(std::vector<double>* w) const { -  *w = wv_; -} - -void Weights::InitSparseVector(SparseVector<double>* w) const { -  for (int i = 1; i < wv_.size(); ++i) { -    const double& weight = wv_[i]; -    if (weight) w->set_value(i, weight); -  } -} - -void Weights::InitFromVector(const std::vector<double>& w) { -  wv_ = w; -  if (wv_.size() > FD::NumFeats()) -    cerr << "WARNING: initializing weight vector has more features than the global feature dictionary!\n"; -  wv_.resize(FD::NumFeats(), 0); -}  | 
