human
Here's a good function header given the following:
I wrote the below code

    cost = SumOfCosts([SumOfParams(), (0.0, DummyCost())])
    scales = [0.01, 0.02, 0.05, 1.0, 5.0]
    shapes = [(1,), (9,), (8, 7), (6, 5, 4), (3, 2, 2, 2)]
    learning_rate = 0.001
    class ModelWithScalers(Model, ):
        def __init__(self):
            super(ModelWithScalers, self).__init__()
            self._params = [sharedX(np.zeros(shape)) for shape in shapes]
            self.input_space = VectorSpace(1)
        def __call__(self, X):
            return X
        def get_lr_scalers(self):
            return dict(zip(self._params, scales))
    model = ModelWithScalers()
    dataset = ArangeDataset(1)
    sgd = SGD(cost=cost, learning_rate=learning_rate, learning_rule=Momentum(0.0), batch_size=1)
    sgd.setup(model=model, dataset=dataset)
    manual = [param.get_value() for param in model.get_params()]
    manual = [(param - (learning_rate * scale)) for (param, scale) in zip(manual, scales)]
    sgd.train(dataset=dataset)
    assert all((np.allclose(manual_param, sgd_param.get_value()) for (manual_param, sgd_param) in zip(manual, model.get_params())))
    manual = [(param - (learning_rate * scale)) for (param, scale) in zip(manual, scales)]
    sgd.train(dataset=dataset)
    assert all((np.allclose(manual_param, sgd_param.get_value()) for (manual_param, sgd_param) in zip(manual, model.get_params())))

What's a good function header?
assistant
#Here's a good function header.

def test_lr_scalers():