Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Changed pointers to references where nullptr is invalid #207

Merged
merged 5 commits into from
Dec 12, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion doc/source/tutorial.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Create a model, and an SGD trainer to update its parameters.
.. code:: cpp

Model mod;
SimpleSGDTrainer sgd(&mod);
SimpleSGDTrainer sgd(mod);

Create a "computation graph," which will define the flow of information.

Expand Down
22 changes: 11 additions & 11 deletions dynet/cfsm-builder.cc
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ SoftmaxBuilder::~SoftmaxBuilder() {}

StandardSoftmaxBuilder::StandardSoftmaxBuilder() {}

StandardSoftmaxBuilder::StandardSoftmaxBuilder(unsigned rep_dim, unsigned vocab_size, Model* model) {
p_w = model->add_parameters({vocab_size, rep_dim});
p_b = model->add_parameters({vocab_size});
StandardSoftmaxBuilder::StandardSoftmaxBuilder(unsigned rep_dim, unsigned vocab_size, Model& model) {
p_w = model.add_parameters({vocab_size, rep_dim});
p_b = model.add_parameters({vocab_size});
}

void StandardSoftmaxBuilder::new_graph(ComputationGraph& cg) {
Expand Down Expand Up @@ -66,12 +66,12 @@ ClassFactoredSoftmaxBuilder::ClassFactoredSoftmaxBuilder() {}

ClassFactoredSoftmaxBuilder::ClassFactoredSoftmaxBuilder(unsigned rep_dim,
const std::string& cluster_file,
Dict* word_dict,
Model* model) {
Dict& word_dict,
Model& model) {
read_cluster_file(cluster_file, word_dict);
const unsigned num_clusters = cdict.size();
p_r2c = model->add_parameters({num_clusters, rep_dim});
p_cbias = model->add_parameters({num_clusters});
p_r2c = model.add_parameters({num_clusters, rep_dim});
p_cbias = model.add_parameters({num_clusters});
p_rc2ws.resize(num_clusters);
p_rcwbiases.resize(num_clusters);
for (unsigned i = 0; i < num_clusters; ++i) {
Expand All @@ -80,8 +80,8 @@ ClassFactoredSoftmaxBuilder::ClassFactoredSoftmaxBuilder(unsigned rep_dim,
if (num_words_in_cluster > 1) {
// for singleton clusters, we don't need these parameters, so
// we don't create them
p_rc2ws[i] = model->add_parameters({num_words_in_cluster, rep_dim});
p_rcwbiases[i] = model->add_parameters({num_words_in_cluster});
p_rc2ws[i] = model.add_parameters({num_words_in_cluster, rep_dim});
p_rcwbiases[i] = model.add_parameters({num_words_in_cluster});
}
}
}
Expand Down Expand Up @@ -178,7 +178,7 @@ Expression ClassFactoredSoftmaxBuilder::full_log_distribution(const Expression&
return log(softmax(concatenate(full_dist)));
}

void ClassFactoredSoftmaxBuilder::read_cluster_file(const std::string& cluster_file, Dict* word_dict) {
void ClassFactoredSoftmaxBuilder::read_cluster_file(const std::string& cluster_file, Dict& word_dict) {
cerr << "Reading clusters from " << cluster_file << " ...\n";
ifstream in(cluster_file);
assert(in);
Expand All @@ -199,7 +199,7 @@ void ClassFactoredSoftmaxBuilder::read_cluster_file(const std::string& cluster_f
assert(startw > endc);
assert(endw > startw);
unsigned c = cdict.convert(line.substr(startc, endc - startc));
unsigned word = word_dict->convert(line.substr(startw, endw - startw));
unsigned word = word_dict.convert(line.substr(startw, endw - startw));
if (word >= widx2cidx.size()) {
widx2cidx.resize(word + 1, -1);
widx2cwidx.resize(word + 1);
Expand Down
8 changes: 4 additions & 4 deletions dynet/cfsm-builder.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class SoftmaxBuilder {

class StandardSoftmaxBuilder : public SoftmaxBuilder {
public:
StandardSoftmaxBuilder(unsigned rep_dim, unsigned vocab_size, Model* model);
StandardSoftmaxBuilder(unsigned rep_dim, unsigned vocab_size, Model& model);
void new_graph(ComputationGraph& cg);
expr::Expression neg_log_softmax(const expr::Expression& rep, unsigned wordidx);
unsigned sample(const expr::Expression& rep);
Expand All @@ -60,8 +60,8 @@ class ClassFactoredSoftmaxBuilder : public SoftmaxBuilder {
public:
ClassFactoredSoftmaxBuilder(unsigned rep_dim,
const std::string& cluster_file,
Dict* word_dict,
Model* model);
Dict& word_dict,
Model& model);

void new_graph(ComputationGraph& cg);
expr::Expression neg_log_softmax(const expr::Expression& rep, unsigned wordidx);
Expand All @@ -71,7 +71,7 @@ class ClassFactoredSoftmaxBuilder : public SoftmaxBuilder {

private:
ClassFactoredSoftmaxBuilder();
void read_cluster_file(const std::string& cluster_file, Dict* word_dict);
void read_cluster_file(const std::string& cluster_file, Dict& word_dict);

Dict cdict;
std::vector<int> widx2cidx; // will be -1 if not present
Expand Down
24 changes: 12 additions & 12 deletions dynet/deep-lstm.cc
Original file line number Diff line number Diff line change
Expand Up @@ -17,25 +17,25 @@ enum { X2I, H2I, C2I, BI, X2O, H2O, C2O, BO, X2C, H2C, BC };
DeepLSTMBuilder::DeepLSTMBuilder(unsigned layers,
unsigned input_dim,
unsigned hidden_dim,
Model* model) : layers(layers) {
Model& model) : layers(layers) {
unsigned layer_input_dim = input_dim;
for (unsigned i = 0; i < layers; ++i) {
// i
Parameter p_x2i = model->add_parameters({hidden_dim, layer_input_dim});
Parameter p_h2i = model->add_parameters({hidden_dim, hidden_dim});
Parameter p_c2i = model->add_parameters({hidden_dim, hidden_dim});
Parameter p_bi = model->add_parameters({hidden_dim});
Parameter p_x2i = model.add_parameters({hidden_dim, layer_input_dim});
Parameter p_h2i = model.add_parameters({hidden_dim, hidden_dim});
Parameter p_c2i = model.add_parameters({hidden_dim, hidden_dim});
Parameter p_bi = model.add_parameters({hidden_dim});

// o
Parameter p_x2o = model->add_parameters({hidden_dim, layer_input_dim});
Parameter p_h2o = model->add_parameters({hidden_dim, hidden_dim});
Parameter p_c2o = model->add_parameters({hidden_dim, hidden_dim});
Parameter p_bo = model->add_parameters({hidden_dim});
Parameter p_x2o = model.add_parameters({hidden_dim, layer_input_dim});
Parameter p_h2o = model.add_parameters({hidden_dim, hidden_dim});
Parameter p_c2o = model.add_parameters({hidden_dim, hidden_dim});
Parameter p_bo = model.add_parameters({hidden_dim});

// c
Parameter p_x2c = model->add_parameters({hidden_dim, layer_input_dim});
Parameter p_h2c = model->add_parameters({hidden_dim, hidden_dim});
Parameter p_bc = model->add_parameters({hidden_dim});
Parameter p_x2c = model.add_parameters({hidden_dim, layer_input_dim});
Parameter p_h2c = model.add_parameters({hidden_dim, hidden_dim});
Parameter p_bc = model.add_parameters({hidden_dim});
layer_input_dim = hidden_dim + input_dim; // output (hidden) from 1st layer is input to next

vector<Parameter> ps = {p_x2i, p_h2i, p_c2i, p_bi, p_x2o, p_h2o, p_c2o, p_bo, p_x2c, p_h2c, p_bc};
Expand Down
2 changes: 1 addition & 1 deletion dynet/deep-lstm.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ struct DeepLSTMBuilder : public RNNBuilder {
explicit DeepLSTMBuilder(unsigned layers,
unsigned input_dim,
unsigned hidden_dim,
Model* model);
Model& model);

Expression back() const override { return h.back().back(); }
std::vector<Expression> final_h() const override { return (h.size() == 0 ? h0 : h.back()); }
Expand Down
12 changes: 6 additions & 6 deletions dynet/dict.cc
Original file line number Diff line number Diff line change
Expand Up @@ -18,28 +18,28 @@ using namespace std;

namespace dynet {

std::vector<int> read_sentence(const std::string& line, Dict* sd) {
std::vector<int> read_sentence(const std::string& line, Dict& sd) {
std::istringstream in(line);
std::string word;
std::vector<int> res;
while(in) {
in >> word;
if (!in || word.empty()) break;
res.push_back(sd->convert(word));
res.push_back(sd.convert(word));
}
return res;
}

void read_sentence_pair(const std::string& line, std::vector<int>* s, Dict* sd, std::vector<int>* t, Dict* td) {
void read_sentence_pair(const std::string& line, std::vector<int>& s, Dict& sd, std::vector<int>& t, Dict& td) {
std::istringstream in(line);
std::string word;
std::string sep = "|||";
Dict* d = sd;
std::vector<int>* v = s;
Dict* d = &sd;
std::vector<int>* v = &s;
while(in) {
in >> word;
if (!in) break;
if (word == sep) { d = td; v = t; continue; }
if (word == sep) { d = &td; v = &t; continue; }
v->push_back(d->convert(word));
}
}
Expand Down
4 changes: 2 additions & 2 deletions dynet/dict.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,8 @@ typedef std::unordered_map<std::string, int> Map;

};

std::vector<int> read_sentence(const std::string& line, Dict* sd);
void read_sentence_pair(const std::string& line, std::vector<int>* s, Dict* sd, std::vector<int>* t, Dict* td);
std::vector<int> read_sentence(const std::string& line, Dict& sd);
void read_sentence_pair(const std::string& line, std::vector<int>& s, Dict& sd, std::vector<int>& t, Dict& td);

} // namespace dynet

Expand Down
24 changes: 12 additions & 12 deletions dynet/fast-lstm.cc
Original file line number Diff line number Diff line change
Expand Up @@ -22,25 +22,25 @@ Namely: C2O, C2I.
FastLSTMBuilder::FastLSTMBuilder(unsigned layers,
unsigned input_dim,
unsigned hidden_dim,
Model* model) : layers(layers) {
Model& model) : layers(layers) {
unsigned layer_input_dim = input_dim;
for (unsigned i = 0; i < layers; ++i) {
// i
Parameter p_x2i = model->add_parameters({hidden_dim, layer_input_dim});
Parameter p_h2i = model->add_parameters({hidden_dim, hidden_dim});
Parameter p_c2i = model->add_parameters({hidden_dim, 1});
Parameter p_bi = model->add_parameters({hidden_dim});
Parameter p_x2i = model.add_parameters({hidden_dim, layer_input_dim});
Parameter p_h2i = model.add_parameters({hidden_dim, hidden_dim});
Parameter p_c2i = model.add_parameters({hidden_dim, 1});
Parameter p_bi = model.add_parameters({hidden_dim});

// o
Parameter p_x2o = model->add_parameters({hidden_dim, layer_input_dim});
Parameter p_h2o = model->add_parameters({hidden_dim, hidden_dim});
Parameter p_c2o = model->add_parameters({hidden_dim, 1});
Parameter p_bo = model->add_parameters({hidden_dim});
Parameter p_x2o = model.add_parameters({hidden_dim, layer_input_dim});
Parameter p_h2o = model.add_parameters({hidden_dim, hidden_dim});
Parameter p_c2o = model.add_parameters({hidden_dim, 1});
Parameter p_bo = model.add_parameters({hidden_dim});

// c
Parameter p_x2c = model->add_parameters({hidden_dim, layer_input_dim});
Parameter p_h2c = model->add_parameters({hidden_dim, hidden_dim});
Parameter p_bc = model->add_parameters({hidden_dim});
Parameter p_x2c = model.add_parameters({hidden_dim, layer_input_dim});
Parameter p_h2c = model.add_parameters({hidden_dim, hidden_dim});
Parameter p_bc = model.add_parameters({hidden_dim});
layer_input_dim = hidden_dim; // output (hidden) from 1st layer is input to next

vector<Parameter> ps = {p_x2i, p_h2i, p_c2i, p_bi, p_x2o, p_h2o, p_c2o, p_bo, p_x2c, p_h2c, p_bc};
Expand Down
2 changes: 1 addition & 1 deletion dynet/fast-lstm.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ struct FastLSTMBuilder : public RNNBuilder {
explicit FastLSTMBuilder(unsigned layers,
unsigned input_dim,
unsigned hidden_dim,
Model* model);
Model& model);

Expression back() const override { return (cur == -1? h0.back() : h[cur].back()); }
std::vector<Expression> final_h() const override { return (h.size() == 0 ? h0 : h.back()); }
Expand Down
20 changes: 10 additions & 10 deletions dynet/gru.cc
Original file line number Diff line number Diff line change
Expand Up @@ -17,23 +17,23 @@ enum { X2Z, H2Z, BZ, X2R, H2R, BR, X2H, H2H, BH };
GRUBuilder::GRUBuilder(unsigned layers,
unsigned input_dim,
unsigned hidden_dim,
Model* model) : hidden_dim(hidden_dim), layers(layers) {
Model& model) : hidden_dim(hidden_dim), layers(layers) {
unsigned layer_input_dim = input_dim;
for (unsigned i = 0; i < layers; ++i) {
// z
Parameter p_x2z = model->add_parameters({hidden_dim, layer_input_dim});
Parameter p_h2z = model->add_parameters({hidden_dim, hidden_dim});
Parameter p_bz = model->add_parameters({hidden_dim});
Parameter p_x2z = model.add_parameters({hidden_dim, layer_input_dim});
Parameter p_h2z = model.add_parameters({hidden_dim, hidden_dim});
Parameter p_bz = model.add_parameters({hidden_dim});

// r
Parameter p_x2r = model->add_parameters({hidden_dim, layer_input_dim});
Parameter p_h2r = model->add_parameters({hidden_dim, hidden_dim});
Parameter p_br = model->add_parameters({hidden_dim});
Parameter p_x2r = model.add_parameters({hidden_dim, layer_input_dim});
Parameter p_h2r = model.add_parameters({hidden_dim, hidden_dim});
Parameter p_br = model.add_parameters({hidden_dim});

// h
Parameter p_x2h = model->add_parameters({hidden_dim, layer_input_dim});
Parameter p_h2h = model->add_parameters({hidden_dim, hidden_dim});
Parameter p_bh = model->add_parameters({hidden_dim});
Parameter p_x2h = model.add_parameters({hidden_dim, layer_input_dim});
Parameter p_h2h = model.add_parameters({hidden_dim, hidden_dim});
Parameter p_bh = model.add_parameters({hidden_dim});
layer_input_dim = hidden_dim; // output (hidden) from 1st layer is input to next

vector<Parameter> ps = {p_x2z, p_h2z, p_bz, p_x2r, p_h2r, p_br, p_x2h, p_h2h, p_bh};
Expand Down
2 changes: 1 addition & 1 deletion dynet/gru.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ struct GRUBuilder : public RNNBuilder {
explicit GRUBuilder(unsigned layers,
unsigned input_dim,
unsigned hidden_dim,
Model* model);
Model& model);
Expression back() const override { return (cur == -1? h0.back() : h[cur].back()); }
std::vector<Expression> final_h() const override { return (h.size() == 0 ? h0 : h.back()); }
std::vector<Expression> final_s() const override { return final_h(); }
Expand Down
12 changes: 6 additions & 6 deletions dynet/hsm-builder.cc
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,9 @@ void Cluster::add_word(unsigned word) {
terminals.push_back(word);
}

void Cluster::initialize(unsigned rep_dim, Model* model) {
void Cluster::initialize(unsigned rep_dim, Model& model) {
this->rep_dim = rep_dim;
initialize(*model);
initialize(model);
}

void Cluster::initialize(Model& model) {
Expand Down Expand Up @@ -199,8 +199,8 @@ DYNET_SERIALIZE_IMPL(Cluster)

HierarchicalSoftmaxBuilder::HierarchicalSoftmaxBuilder(unsigned rep_dim,
const std::string& cluster_file,
Dict* word_dict,
Model* model) {
Dict& word_dict,
Model& model) {
root = read_cluster_file(cluster_file, word_dict);
root->initialize(rep_dim, model);
}
Expand Down Expand Up @@ -266,7 +266,7 @@ Expression HierarchicalSoftmaxBuilder::full_log_distribution(const Expression& r
inline bool is_ws(char x) { return (x == ' ' || x == '\t'); }
inline bool not_ws(char x) { return (x != ' ' && x != '\t'); }

Cluster* HierarchicalSoftmaxBuilder::read_cluster_file(const std::string& cluster_file, Dict* word_dict) {
Cluster* HierarchicalSoftmaxBuilder::read_cluster_file(const std::string& cluster_file, Dict& word_dict) {
cerr << "Reading clusters from " << cluster_file << " ...\n";
ifstream in(cluster_file);
assert(in);
Expand Down Expand Up @@ -308,7 +308,7 @@ Cluster* HierarchicalSoftmaxBuilder::read_cluster_file(const std::string& cluste
assert(endw > startw);

string word = line.substr(startw, endw - startw);
unsigned widx = word_dict->convert(word);
unsigned widx = word_dict.convert(word);
node->add_word(widx);

if (widx2path.size() <= widx) {
Expand Down
8 changes: 4 additions & 4 deletions dynet/hsm-builder.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class Cluster {
Cluster* add_child(unsigned sym);
void add_word(unsigned word);
void initialize(Model& model);
void initialize(unsigned rep_dim, Model* model);
void initialize(unsigned rep_dim, Model& model);

void new_graph(ComputationGraph& cg);
unsigned sample(expr::Expression h, ComputationGraph& cg) const;
Expand All @@ -59,8 +59,8 @@ class HierarchicalSoftmaxBuilder : public SoftmaxBuilder {
public:
HierarchicalSoftmaxBuilder(unsigned rep_dim,
const std::string& cluster_file,
Dict* word_dict,
Model* model);
Dict& word_dict,
Model& model);
~HierarchicalSoftmaxBuilder();

void initialize(Model& model);
Expand All @@ -77,7 +77,7 @@ class HierarchicalSoftmaxBuilder : public SoftmaxBuilder {
expr::Expression full_log_distribution(const expr::Expression& rep);

private:
Cluster* read_cluster_file(const std::string& cluster_file, Dict* word_dict);
Cluster* read_cluster_file(const std::string& cluster_file, Dict& word_dict);
std::vector<Cluster*> widx2path; // will be NULL if not found
Dict path_symbols;

Expand Down
24 changes: 12 additions & 12 deletions dynet/lstm.cc
Original file line number Diff line number Diff line change
Expand Up @@ -24,25 +24,25 @@ enum { X2I, H2I, C2I, BI, X2O, H2O, C2O, BO, X2C, H2C, BC };
LSTMBuilder::LSTMBuilder(unsigned layers,
unsigned input_dim,
unsigned hidden_dim,
Model* model) : layers(layers) {
Model& model) : layers(layers) {
unsigned layer_input_dim = input_dim;
for (unsigned i = 0; i < layers; ++i) {
// i
Parameter p_x2i = model->add_parameters({hidden_dim, layer_input_dim});
Parameter p_h2i = model->add_parameters({hidden_dim, hidden_dim});
Parameter p_c2i = model->add_parameters({hidden_dim, hidden_dim});
Parameter p_bi = model->add_parameters({hidden_dim});
Parameter p_x2i = model.add_parameters({hidden_dim, layer_input_dim});
Parameter p_h2i = model.add_parameters({hidden_dim, hidden_dim});
Parameter p_c2i = model.add_parameters({hidden_dim, hidden_dim});
Parameter p_bi = model.add_parameters({hidden_dim});

// o
Parameter p_x2o = model->add_parameters({hidden_dim, layer_input_dim});
Parameter p_h2o = model->add_parameters({hidden_dim, hidden_dim});
Parameter p_c2o = model->add_parameters({hidden_dim, hidden_dim});
Parameter p_bo = model->add_parameters({hidden_dim});
Parameter p_x2o = model.add_parameters({hidden_dim, layer_input_dim});
Parameter p_h2o = model.add_parameters({hidden_dim, hidden_dim});
Parameter p_c2o = model.add_parameters({hidden_dim, hidden_dim});
Parameter p_bo = model.add_parameters({hidden_dim});

// c
Parameter p_x2c = model->add_parameters({hidden_dim, layer_input_dim});
Parameter p_h2c = model->add_parameters({hidden_dim, hidden_dim});
Parameter p_bc = model->add_parameters({hidden_dim});
Parameter p_x2c = model.add_parameters({hidden_dim, layer_input_dim});
Parameter p_h2c = model.add_parameters({hidden_dim, hidden_dim});
Parameter p_bc = model.add_parameters({hidden_dim});
layer_input_dim = hidden_dim; // output (hidden) from 1st layer is input to next

vector<Parameter> ps = {p_x2i, p_h2i, p_c2i, p_bi, p_x2o, p_h2o, p_c2o, p_bo, p_x2c, p_h2c, p_bc};
Expand Down
2 changes: 1 addition & 1 deletion dynet/lstm.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ struct LSTMBuilder : public RNNBuilder {
explicit LSTMBuilder(unsigned layers,
unsigned input_dim,
unsigned hidden_dim,
Model* model);
Model& model);

Expression back() const override { return (cur == -1? h0.back() : h[cur].back()); }
std::vector<Expression> final_h() const override { return (h.size() == 0 ? h0 : h.back()); }
Expand Down
Loading