如何在Hyperas中定义自定义损失函数?
我正在运行具有3个输出的4个密集层体系结构。对于损失,我想将其定义为:
Loss
( (Output1 Error) / max[Output1_pred, Output1_true] ) +
( (Output2 Error) / max[Output2_pred, Output2_true] ) +
( (Output3 Error) / max[Output3_pred, Output3_true] )
完成这项工作很简单吗?在这种情况下如何索引y_pred和y_true?
答案 0 :(得分:0)
要在keras中创建自定义损失函数,请遵循以下Make a custom loss function in keras
现在要向量化损失函数,以免速度过慢,请使用向量化,您可以将损失函数编写为:
loss = np.sum(np.divide(Output_Error,np.amax(np.hstack((Output_pred,Output_true)),axis=1)))
现在让我们来分解一下
np.hstack((M1,M2))
将矩阵堆叠为[M1 | M2],这两种情况都是您的情况。
np.amax(M,axis = 1)
沿x轴(即每一行)创建一个最大值矢量。
np.divide(M1,M2)
对矩阵进行逐元素除法,因此您仍将获得向量。
np.sum(M)
提供矩阵M的标量和。
要了解有关这些功能的更多信息,请访问https://docs.scipy.org/doc/numpy-1.15.1/reference/
如果您有任何疑问,请在下面注释掉。