【发布时间】:2016-08-23 03:13:33
【问题描述】:
我有一个功能
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(vector) 或 huber_loss(vector,2) 例如。
我想在 weights() 中使裁剪参数可选,而不在权重级别提供默认值,因为这会给所有损失函数提供相同的默认值,这是错误的。
如何使裁剪参数在权重中成为可选参数,以便如果我们不给出值,它会使用特定损失函数的默认值? (我知道我们可以设置默认的 clipping=None 并在 loss 函数中进行测试,如果 clipping=None 然后设置 clipping = 2.38 等等。但我认为有一种更优雅的方法来做到这一点。
我试图以这种方式解决问题:
weights(vector, loss_function, max_iterations=100, tolerance=1e-5, *clipping)
但是如果我们想在不指定 max_iterations 和容差的情况下为裁剪提供特定值,则它不起作用。
知道如何以 Pythonic 和优雅的方式解决这个问题吗?
【问题讨论】:
-
您对
clipping和vector的使用是否仅限于调用loss_function?
标签: python optional-parameters