Ufal-UDPipe
view release on metacpan or search on metacpan
udpipe/udpipe.cpp view on Meta::CPAN
// Allocate space for trainer_data if required)
workspace::trainer_data none_trainer_data;
if (TRAINER::need_trainer_data) {
while (network.weights[0].size() > w.weights_trainer[0].size()) w.weights_trainer[0].emplace_back(network.weights[0].front().size());
while (network.weights[1].size() > w.weights_trainer[1].size()) w.weights_trainer[1].emplace_back(outcomes_size);
}
// Compute error vector
w.error_outcomes.resize(outcomes_size);
for (unsigned i = 0; i < outcomes_size; i++)
w.error_outcomes[i] = (i == required_outcome) - w.outcomes[i];
// Backpropagate error_outcomes to error_hidden
w.error_hidden.assign(hidden_layer_size, 0);
for (auto&& i : w.hidden_kept)
for (unsigned j = 0; j < outcomes_size; j++)
w.error_hidden[i] += network.weights[1][i][j] * w.error_outcomes[j];
// Dropout normalization
if (dropout_hidden) {
float dropout_factor = 1. / (1. - dropout_hidden);
for (auto&& i : w.hidden_kept)
( run in 0.348 second using v1.01-cache-2.11-cpan-05444aca049 )