我正在尝试定义一个自定义损失函数,该函数在回归模型中包含3个输出变量。
def custom_loss(y_true, y_pred):
y_true_c = K.cast(y_true, 'float32') # Shape=(batch_size, 3)
y_pred_c = K.cast(y_pred, 'float32') # Shape=(batch_size, 3)
# Compute error
num = K.abs(y_true_c - y_pred_c) # Shape=(batch_size, 3)
den = K.maximum(y_true_c, y_pred_c) # Shape=(batch_size, 3)
err = K.sum(num / den, axis=-1) # Shape=(batch_size,)
# Output loss
return K.mean(err)
在求和到单个损失值之前,如何权衡3个输出给定的3个损失?
我的model.compile()语句当前为:
model.compile(loss=custom_loss, metrics=['mse'],optimizer=optimizer, loss_weights=[0.25,0.5,0.25])
在这里,我尝试分别为3个输出分别加权0.25、0.5、0.25(总和为1)。但是我认为此工具可能不适用于自定义损失功能。
我该如何实现?
答案 0 :(得分:1)
您可以按如下方式向您的自定义损失传递一个额外的参数import pandas as pd
df = pd.read_table(filename, names=["S"])
print(df["S"].str.replace(",", "."))
:
0 2017-09-05 15:55:44.958 - Alarm: Shelter Inver...
1 2017-09-05 15:55:44.966 - Alarm: Shelter Batte...
Name: S, dtype: object
然后按如下所示编译模型:
weights
注意:未测试。