Пример #1
0
 def test_batch_idx_with_none(self, init_optimizer):
     with pytest.warns(DeprecationWarning):
         scheduler = CyclicLR(init_optimizer)
     for p_group in init_optimizer.param_groups:
         assert p_group['initial_lr']
     scheduler.batch_step()
     assert scheduler.last_batch_idx == 1
Пример #2
0
 def test_triangular_mode_step_size_up_down(self, init_optimizer, num_groups):
     target = [1, 2, 3, 4, 5, 13/3, 11/3, 9/3, 7/3, 5/3, 1]
     targets = [target] * num_groups
     scheduler = CyclicLR(init_optimizer, base_lr=1, max_lr=5,
                          step_size_up=4,
                          step_size_down=6,
                          mode='triangular')
     self._test_cycle_lr(init_optimizer, scheduler, targets)
Пример #3
0
 def test_triangular_mode(self, init_optimizer, num_groups):
     target = [1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3]
     targets = [target] * num_groups
     scheduler = CyclicLR(init_optimizer,
                          base_lr=1,
                          max_lr=5,
                          step_size_up=4,
                          mode='triangular')
     self._test_cycle_lr(init_optimizer, scheduler, targets)
Пример #4
0
 def test_exp_range_mode_step_size_up_down(self, init_optimizer, num_groups):
     base_lr, max_lr = 1, 5
     diff_lr = max_lr - base_lr
     gamma = 0.9
     xs = ([0, 0.5, 1, 5/6, 4/6, 3/6, 2/6, 1/6, 0, 0.5, 1, 5/6, 4/6])
     target = [base_lr + x*diff_lr*gamma**i for i, x in enumerate(xs)]
     targets = [target] * num_groups
     scheduler = CyclicLR(init_optimizer, base_lr=base_lr, max_lr=max_lr,
                          step_size_up=2, step_size_down=6,
                          mode='exp_range', gamma=gamma)
     self._test_cycle_lr(init_optimizer, scheduler, targets)
Пример #5
0
 def test_triangular2_mode(self, init_optimizer, num_groups):
     base_target = ([1, 2, 3, 4, 5, 4, 3, 2, 1,
                     1.5, 2.0, 2.5, 3.0, 2.5, 2.0, 1.5, 1,
                     1.25, 1.50, 1.75, 2.00, 1.75])
     deltas = [2*i for i in range(0, num_groups)]
     base_lrs = [1 + delta for delta in deltas]
     max_lrs = [5 + delta for delta in deltas]
     targets = [[x + delta for x in base_target] for delta in deltas]
     scheduler = CyclicLR(init_optimizer, base_lr=base_lrs, max_lr=max_lrs,
                          step_size_up=4, mode='triangular2')
     self._test_cycle_lr(init_optimizer, scheduler, targets)
Пример #6
0
 def test_triangular2_mode_step_size_up_down(self, init_optimizer, num_groups):
     base_target = ([1, 3, 5, 13/3, 11/3, 9/3, 7/3, 5/3,
                     1, 2, 3, 8/3, 7/3, 6/3, 5/3, 4/3,
                     1, 3/2, 2, 11/6, 10/6, 9/6, 8/6, 7/6])
     deltas = [2*i for i in range(0, num_groups)]
     base_lrs = [1 + delta for delta in deltas]
     max_lrs = [5 + delta for delta in deltas]
     targets = [[x + delta for x in base_target] for delta in deltas]
     scheduler = CyclicLR(init_optimizer, base_lr=base_lrs, max_lr=max_lrs,
                          step_size_up=2, step_size_down=6,
                          mode='triangular2')
     self._test_cycle_lr(init_optimizer, scheduler, targets)
Пример #7
0
 def test_exp_range_mode(self, init_optimizer, num_groups):
     base_lr, max_lr = 1, 5
     diff_lr = max_lr - base_lr
     gamma = 0.9
     xs = ([0, 0.25, 0.5, 0.75, 1, 0.75, 0.50, 0.25, 0, 0.25, 0.5, 0.75, 1])
     target = [base_lr + x * diff_lr * gamma**i for i, x in enumerate(xs)]
     targets = [target] * num_groups
     scheduler = CyclicLR(init_optimizer,
                          base_lr=base_lr,
                          max_lr=max_lr,
                          step_size=4,
                          mode='exp_range',
                          gamma=gamma)
     self._test_cycle_lr(init_optimizer, scheduler, targets)
Пример #8
0
    def test_scale_fn(self, init_optimizer):
        def scale_fn(x):
            return x

        scheduler = CyclicLR(init_optimizer, scale_fn=scale_fn)
        assert scheduler.scale_fn == scale_fn
Пример #9
0
 def test_batch_idx_with_none(self, init_optimizer):
     scheduler = CyclicLR(init_optimizer)
     scheduler.batch_step()
     assert scheduler.last_batch_idx == 0
Пример #10
0
 def test_invalid_not_a_optimizer(self):
     with pytest.raises(TypeError):
         CyclicLR('this is a string')
Пример #11
0
 def test_invalid_mode(self, init_optimizer):
     with pytest.raises(ValueError):
         CyclicLR(init_optimizer, mode='badmode')
Пример #12
0
 def test_invalid_number_of_max_lr(self, init_optimizer):
     with pytest.raises(ValueError):
         CyclicLR(init_optimizer, max_lr=[1, 2])