Improve progress tracking to terminate when all trees are trained

Instead of only checking every second
This commit is contained in:
Joel Therrien 2019-05-29 15:05:48 -07:00
parent 1e40b7ff9b
commit 4aac73b868

View file

@ -153,15 +153,15 @@ public class ForestTrainer<Y, TO, FO> {
executorService.execute(worker); executorService.execute(worker);
} }
executorService.shutdown();
int prevNumberTreesSet = -1; int prevNumberTreesSet = -1;
while(true){ boolean running = true;
while(running){
try { try {
if (executorService.awaitTermination(1, TimeUnit.SECONDS)) break; if (executorService.awaitTermination(1, TimeUnit.SECONDS)) running = false;
} catch (InterruptedException e) { } catch (InterruptedException e) {
System.err.println("There was an InterruptedException while waiting for the forest to finish training; this is unusual but on its own shouldn't be a problem."); // do nothing and just continue; this won't happen and if it did we'd just update the counter quicker
System.err.println("Please send a bug report about it to joelt@sfu.ca");
e.printStackTrace();
// do nothing; this shouldn't be an issue
} }
int numberTreesSet = 0; int numberTreesSet = 0;
@ -178,10 +178,6 @@ public class ForestTrainer<Y, TO, FO> {
prevNumberTreesSet = numberTreesSet; prevNumberTreesSet = numberTreesSet;
} }
if(numberTreesSet == ntree){
executorService.shutdown();
}
} }
if(displayProgress){ if(displayProgress){
@ -224,15 +220,15 @@ public class ForestTrainer<Y, TO, FO> {
executorService.execute(worker); executorService.execute(worker);
} }
executorService.shutdown();
int prevNumberTreesSet = -1; int prevNumberTreesSet = -1;
while(true){ boolean running = true;
while(running){
try { try {
if (executorService.awaitTermination(1, TimeUnit.SECONDS)) break; if (executorService.awaitTermination(1, TimeUnit.SECONDS)) running = false;
} catch (InterruptedException e) { } catch (InterruptedException e) {
System.err.println("There was an InterruptedException while waiting for the forest to finish training; this is unusual but on its own shouldn't be a problem."); // do nothing and just continue; this won't happen and if it did we'd just update the counter quicker
System.err.println("Please send a bug report about it to joelt@sfu.ca");
e.printStackTrace();
// do nothing; this shouldn't be an issue
} }
int numberTreesSet = treeCount.get(); int numberTreesSet = treeCount.get();
@ -244,10 +240,6 @@ public class ForestTrainer<Y, TO, FO> {
} }
if(numberTreesSet == ntree){
executorService.shutdown();
}
} }
if(displayProgress){ if(displayProgress){