У меня есть функцияPython: необязательные аргументы для функции вызова функции нижнего уровня
def weights(vector, loss_function, clipping, max_iterations=100, tolerance=1e-5)
, который нужно вызвать функцию потерь ниже уровня, который может быть любым из них с вектором и отсечение, переданная в аргументе:
huber_loss(vector, clipping=2.38) cauchy_loss(vector, clipping=3.27) bisquare_loss(vector, clipping=1.04)
Каждая функция потерь имеет особое значение правильной подрезки по умолчанию, поэтому мы можем назвать их либо huber_loss (вектор) или huber_loss (вектор, 2), например.
Я хочу сделать параметр отсечения необязательным в weight() без указания значения по умолчанию на уровне весов, потому что это даст одинаковые значения по умолчанию для всех функций потерь, и это неправильно.
Как сделать параметр отсечения необязательным в весах, чтобы, если мы не даем значение, оно использует значение по умолчанию для конкретной функции потерь? (Я знаю, что мы можем установить отсечение по умолчанию = Нет и протестировать функцию потерь, если отсечение = Нет, тогда установите clipping = 2.38 и т. Д., Но я думаю, что есть намного более элегантный способ сделать это).
Я пытался решить проблему таким образом:
weights(vector, loss_function, max_iterations=100, tolerance=1e-5, *clipping)
, но если мы хотим, чтобы дать определенное значение для отсечения без указания max_iterations и терпимости она не работает.
Любая идея, как решить это в питоническом и элегантном стиле?
Является ли ваше использование '' 'clipping''' и' '' vector''' ограничивается только вызовом '' 'loss_function' ''? –