diff --git a/neural_network/src/MultiMLP.cpp b/neural_network/src/MultiMLP.cpp index 03d4f73871bd9339663b333c00c2e5e6c7c71f4f..6458022021ae855141059f5a4a7d1faff8de87b9 100644 --- a/neural_network/src/MultiMLP.cpp +++ b/neural_network/src/MultiMLP.cpp @@ -90,24 +90,20 @@ std::vector<float> MultiMLP::predict(FeatureModel::FeatureDescription & fd) float MultiMLP::update(FeatureModel::FeatureDescription & fd, int gold) { - try - { - for (auto & mlp : mlps) + float loss = 0.0; + for (auto & mlp : mlps) + try { int id = std::stoi(split(mlp.name, '_')[1]); - float loss = 0.0; mlp.setBatchSize(getBatchSize()); - loss = mlp.update(fd, id == gold ? 1 : 0); + loss += mlp.update(fd, id == gold ? 1 : 0); trainer->update(); - return loss; + } catch (BatchNotFull &) + { } - } catch (BatchNotFull &) - { - return 0.0; - } - return 0.0; + return loss; } float MultiMLP::update(FeatureModel::FeatureDescription &, const std::vector<float> &) @@ -120,20 +116,15 @@ float MultiMLP::update(FeatureModel::FeatureDescription &, const std::vector<flo float MultiMLP::getLoss(FeatureModel::FeatureDescription & fd, int gold) { float loss = 0.0; - try - { - for (auto & mlp : mlps) + for (auto & mlp : mlps) + try { int id = std::stoi(split(mlp.name, '_')[1]); mlp.setBatchSize(getBatchSize()); loss += mlp.getLoss(fd, id == gold ? 1 : 0); - - trainer->update(); + } catch (BatchNotFull &) + { } - } catch (BatchNotFull &) - { - return 0.0; - } return loss; }