Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/moses-smt/nplm.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/neuralNetwork.h')
-rw-r--r--src/neuralNetwork.h20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/neuralNetwork.h b/src/neuralNetwork.h
index 84b0a79..fd451f1 100644
--- a/src/neuralNetwork.h
+++ b/src/neuralNetwork.h
@@ -96,13 +96,19 @@ public:
if (normalization)
{
Eigen::Matrix<double,Eigen::Dynamic,1> scores(m->output_vocab_size);
- prop.output_layer_node.param->fProp(prop.second_hidden_activation_node.fProp_matrix, scores);
+ if (prop.skip_hidden)
+ prop.output_layer_node.param->fProp(prop.first_hidden_activation_node.fProp_matrix, scores);
+ else
+ prop.output_layer_node.param->fProp(prop.second_hidden_activation_node.fProp_matrix, scores);
double logz = logsum(scores.col(0));
log_prob = weight * (scores(output, 0) - logz);
}
else
{
- log_prob = weight * prop.output_layer_node.param->fProp(prop.second_hidden_activation_node.fProp_matrix, output, 0);
+ if (prop.skip_hidden)
+ log_prob = weight * prop.output_layer_node.param->fProp(prop.first_hidden_activation_node.fProp_matrix, output, 0);
+ else
+ log_prob = weight * prop.output_layer_node.param->fProp(prop.second_hidden_activation_node.fProp_matrix, output, 0);
}
stop_timer(3);
@@ -135,7 +141,10 @@ public:
if (normalization)
{
Eigen::Matrix<double,Eigen::Dynamic,Eigen::Dynamic> scores(m->output_vocab_size, ngram.cols());
- prop.output_layer_node.param->fProp(prop.second_hidden_activation_node.fProp_matrix, scores);
+ if (prop.skip_hidden)
+ prop.output_layer_node.param->fProp(prop.first_hidden_activation_node.fProp_matrix, scores);
+ else
+ prop.output_layer_node.param->fProp(prop.second_hidden_activation_node.fProp_matrix, scores);
// And softmax and loss
Matrix<double,Dynamic,Dynamic> output_probs(m->output_vocab_size, ngram.cols());
@@ -152,7 +161,10 @@ public:
for (int j=0; j<ngram.cols(); j++)
{
int output = ngram(m->ngram_size-1, j);
- log_probs(0, j) = weight * prop.output_layer_node.param->fProp(prop.second_hidden_activation_node.fProp_matrix, output, j);
+ if (prop.skip_hidden)
+ log_probs(0, j) = weight * prop.output_layer_node.param->fProp(prop.first_hidden_activation_node.fProp_matrix, output, j);
+ else
+ log_probs(0, j) = weight * prop.output_layer_node.param->fProp(prop.second_hidden_activation_node.fProp_matrix, output, j);
}
}
}