diff options
Diffstat (limited to 'src/neuralNetwork.h')
-rw-r--r-- | src/neuralNetwork.h | 20 |
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); } } } |