MCPcopy Create free account
hub / github.com/clab/dynet / loss

Method loss

examples/word-embedding/train_tok-embed.cc:136–162  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

134 p_start = model.add_parameters({EMBED_DIM});
135 }
136 Expression loss(ComputationGraph& cg, const Expression& v, const string& code) {
137 decoder.new_graph(cg);
138 Expression h = tanh(v);
139 vector<Expression> init = {v, h};
140 decoder.start_new_sequence(init);
141 Expression start = parameter(cg, p_start);
142 PrefixNode* cur = &pfc->root;
143 decoder.add_input(start);
144 size_t i = 0;
145 vector<Expression> errs(code.size());
146 while(i < code.size()) {
147 assert(cur);
148 Expression pred = decoder.back();
149 Expression rp = parameter(cg, cur->pred);
150 Expression bias = parameter(cg, cur->bias);
151 Expression p = logistic(dot_product(pred, rp) + bias);
152 // maybe squared error instead of xentropy?
153 if (code[i] == '0') p = 1.f - p;
154 errs[i] = log(p);
155 Expression cond = parameter(cg, code[i] == '0' ? cur->zero_cond : cur->one_cond);
156 decoder.add_input(cond);
157 cur = code[i] == '0' ? cur->zero_child : cur->one_child;
158 ++i;
159 }
160 assert(cur->terminal);
161 return -sum(errs);
162 }
163};
164
165template <class Builder>

Callers 1

mainFunction · 0.80

Calls 11

sumFunction · 0.85
tanhFunction · 0.50
parameterFunction · 0.50
logisticFunction · 0.50
dot_productFunction · 0.50
logFunction · 0.50
new_graphMethod · 0.45
start_new_sequenceMethod · 0.45
add_inputMethod · 0.45
sizeMethod · 0.45
backMethod · 0.45

Tested by

no test coverage detected