我正在尝试使用 Keras 来实现中完成的工作通用的自适应鲁棒损失函数 https://arxiv.org/abs/1701.03077。作者提供了处理困难细节的张量流代码。我只是想在 Keras 中使用他的预构建函数。
他的自定义损失函数正在学习控制损失函数形状的参数“alpha”。除了训练期间的损失之外,我还想跟踪“alpha”。
我对 Keras 自定义损失函数和使用包装器有些熟悉,但我不完全确定如何使用回调来跟踪“alpha”。下面是我选择如何在 Keras 中简单地构建损失函数。但是我不确定如何访问“alpha”进行跟踪。
从提供的张量流代码 https://github.com/google-research/google-research/blob/master/robust_loss/adaptive.py,函数lossfun(x)返回一个元组。
def lossfun(x,
alpha_lo=0.001,
alpha_hi=1.999,
alpha_init=None,
scale_lo=1e-5,
scale_init=1.,
**kwargs):
"""
Returns:
A tuple of the form (`loss`, `alpha`, `scale`).
"""
def customAdaptiveLoss():
def wrappedloss(y_true,y_pred):
loss, alpha, scale = lossfun((y_true-y_pred)) #Author's function
return loss
return wrappedloss
Model.compile(optimizer = optimizers.Adam(0.001),
loss = customAdaptiveLoss,)
同样,我希望做的是在训练期间跟踪变量“alpha”。