def testMedianStoppingOnCompleteOnly(self):
     rule = MedianStoppingRule(grace_period=0, min_samples_required=1)
     t1, t2 = self.basicSetup(rule)
     self.assertEqual(rule.on_trial_result(None, t2, result(100, 0)),
                      TrialScheduler.CONTINUE)
     rule.on_trial_complete(None, t1, result(10, 1000))
     self.assertEqual(rule.on_trial_result(None, t2, result(101, 0)),
                      TrialScheduler.STOP)
 def testMedianStoppingUsesMedian(self):
     rule = MedianStoppingRule(grace_period=0, min_samples_required=1)
     t1, t2 = self.basicSetup(rule)
     rule.on_trial_complete(None, t1, result(10, 1000))
     rule.on_trial_complete(None, t2, result(10, 1000))
     t3 = Trial("PPO")
     self.assertEqual(rule.on_trial_result(None, t3, result(1, 260)),
                      TrialScheduler.CONTINUE)
     self.assertEqual(rule.on_trial_result(None, t3, result(2, 260)),
                      TrialScheduler.STOP)
Exemplo n.º 3
0
 def testMedianStoppingOnCompleteOnly(self):
     rule = MedianStoppingRule(grace_period=0, min_samples_required=1)
     t1, t2 = self.basicSetup(rule)
     self.assertEqual(
         rule.on_trial_result(None, t2, result(100, 0)),
         TrialScheduler.CONTINUE)
     rule.on_trial_complete(None, t1, result(10, 1000))
     self.assertEqual(
         rule.on_trial_result(None, t2, result(101, 0)),
         TrialScheduler.STOP)
Exemplo n.º 4
0
 def testMedianStoppingUsesMedian(self):
     rule = MedianStoppingRule(grace_period=0, min_samples_required=1)
     t1, t2 = self.basicSetup(rule)
     rule.on_trial_complete(None, t1, result(10, 1000))
     rule.on_trial_complete(None, t2, result(10, 1000))
     t3 = Trial("PPO")
     self.assertEqual(
         rule.on_trial_result(None, t3, result(1, 260)),
         TrialScheduler.CONTINUE)
     self.assertEqual(
         rule.on_trial_result(None, t3, result(2, 260)),
         TrialScheduler.STOP)
Exemplo n.º 5
0
 def testMedianStoppingSoftStop(self):
     rule = MedianStoppingRule(grace_period=0,
                               min_samples_required=1,
                               hard_stop=False)
     t1, t2 = self.basicSetup(rule)
     rule.on_trial_complete(None, t1, result(10, 1000))
     rule.on_trial_complete(None, t2, result(10, 1000))
     t3 = Trial("t3", "PPO")
     self.assertEqual(rule.on_trial_result(None, t3, result(1, 260)),
                      TrialScheduler.CONTINUE)
     self.assertEqual(rule.on_trial_result(None, t3, result(2, 260)),
                      TrialScheduler.PAUSE)
    def testAlternateMetrics(self):
        def result2(t, rew):
            return TrainingResult(training_iteration=t, neg_mean_loss=rew)

        rule = MedianStoppingRule(grace_period=0,
                                  min_samples_required=1,
                                  time_attr='training_iteration',
                                  reward_attr='neg_mean_loss')
        t1 = Trial("PPO")  # mean is 450, max 900, t_max=10
        t2 = Trial("PPO")  # mean is 450, max 450, t_max=5
        for i in range(10):
            self.assertEqual(
                rule.on_trial_result(None, t1, result2(i, i * 100)),
                TrialScheduler.CONTINUE)
        for i in range(5):
            self.assertEqual(rule.on_trial_result(None, t2, result2(i, 450)),
                             TrialScheduler.CONTINUE)
        rule.on_trial_complete(None, t1, result2(10, 1000))
        self.assertEqual(rule.on_trial_result(None, t2, result2(5, 450)),
                         TrialScheduler.CONTINUE)
        self.assertEqual(rule.on_trial_result(None, t2, result2(6, 0)),
                         TrialScheduler.CONTINUE)
Exemplo n.º 7
0
    def testAlternateMetrics(self):
        def result2(t, rew):
            return TrainingResult(training_iteration=t, neg_mean_loss=rew)

        rule = MedianStoppingRule(
            grace_period=0, min_samples_required=1,
            time_attr='training_iteration', reward_attr='neg_mean_loss')
        t1 = Trial("PPO")  # mean is 450, max 900, t_max=10
        t2 = Trial("PPO")  # mean is 450, max 450, t_max=5
        for i in range(10):
            self.assertEqual(
                rule.on_trial_result(None, t1, result2(i, i * 100)),
                TrialScheduler.CONTINUE)
        for i in range(5):
            self.assertEqual(
                rule.on_trial_result(None, t2, result2(i, 450)),
                TrialScheduler.CONTINUE)
        rule.on_trial_complete(None, t1, result2(10, 1000))
        self.assertEqual(
            rule.on_trial_result(None, t2, result2(5, 450)),
            TrialScheduler.CONTINUE)
        self.assertEqual(
            rule.on_trial_result(None, t2, result2(6, 0)),
            TrialScheduler.CONTINUE)