From b9cd4b4eef86847b95c47e54e3fd0b5a1e8448b5 Mon Sep 17 00:00:00 2001
From: Franck Dary <franck.dary@lis-lab.fr>
Date: Thu, 6 Aug 2020 16:09:06 +0200
Subject: [PATCH] Fixed min float value

---
 reading_machine/src/Action.cpp | 2 +-
 trainer/src/MacaonTrain.cpp    | 3 ++-
 trainer/src/Trainer.cpp        | 2 +-
 3 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/reading_machine/src/Action.cpp b/reading_machine/src/Action.cpp
index 2ef4baa..a6acb52 100644
--- a/reading_machine/src/Action.cpp
+++ b/reading_machine/src/Action.cpp
@@ -1061,7 +1061,7 @@ Action Action::writeScore(const std::string & colName, Config::Object object, in
     int lineIndex = config.getRelativeWordIndex(object, relativeIndex);
 
     float score = config.getChosenActionScore();
-    if (score != std::numeric_limits<float>::min())
+    if (-score != std::numeric_limits<float>::max())
       return addHypothesis(colName, lineIndex, fmt::format("{}", score)).apply(config, a);
     else
       return addHypothesis(colName, lineIndex, config.getConst(colName, lineIndex, 0)).apply(config, a);
diff --git a/trainer/src/MacaonTrain.cpp b/trainer/src/MacaonTrain.cpp
index 923bbff..f450408 100644
--- a/trainer/src/MacaonTrain.cpp
+++ b/trainer/src/MacaonTrain.cpp
@@ -167,7 +167,8 @@ int MacaonTrain::main()
   Trainer trainer(machine, batchSize);
   Decoder decoder(machine);
 
-  float bestDevScore = computeDevScore ? std::numeric_limits<float>::min() : std::numeric_limits<float>::max();
+  float bestDevScore = computeDevScore ? -std::numeric_limits<float>::max() : std::numeric_limits<float>::max();
+  fmt::print("best = {}\n", bestDevScore);
 
   auto trainInfos = machinePath.parent_path() / "train.info";
 
diff --git a/trainer/src/Trainer.cpp b/trainer/src/Trainer.cpp
index d78b980..bdd5b33 100644
--- a/trainer/src/Trainer.cpp
+++ b/trainer/src/Trainer.cpp
@@ -82,7 +82,7 @@ void Trainer::extractExamples(SubConfig & config, bool debug, std::filesystem::p
 
     int nbClasses = machine.getTransitionSet(config.getState()).size();
 
-    float bestScore = std::numeric_limits<float>::min();
+    float bestScore = -std::numeric_limits<float>::max();
       
     if (dynamicOracle and util::choiceWithProbability(1.0) and config.getState() != "tokenizer" and config.getState() != "segmenter")
     {
-- 
GitLab