diff --git a/lmj/nn/trainer.py b/lmj/nn/trainer.py
index <HASH>..<HASH> 100644
--- a/lmj/nn/trainer.py
+++ b/lmj/nn/trainer.py
@@ -62,6 +62,8 @@ class Trainer(object):
                         best_iter = i
                         best_params = [p.get_value().copy() for p in self.params]
                         fmt += ' *'
+                    else:
+                        self.validation_stagnant()
                 self.finish_iteration()
             except KeyboardInterrupt:
                 logging.info('interrupted !')
@@ -76,6 +78,9 @@ class Trainer(object):
     def finish_iteration(self):
         pass
 
+    def validation_stagnant(self):
+        pass
+
     def evaluate(self, test_set):
         return np.mean([self.f_eval(*i) for i in test_set], axis=0)
 
@@ -118,7 +123,7 @@ class SGD(Trainer):
     def learning_rate(self):
         return self.f_rate()[0]
 
-    def finish_iteration(self):
+    def validation_stagnant(self):
         self.f_finish()
During SGD training, only reduce the learning rate when validation fails to make an improvement.