关于keras、hyperas的海关损失

关于keras、hyperas的海关损失,keras,Keras,如何在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

如何在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?

要在kera中创建自定义损失函数,请遵循以下步骤

现在,要对损失函数进行矢量化,以避免速度过慢,请使用矢量化,要做到这一点,您可以将损失函数写成:

loss=np.sum(np.divide(输出错误,np.amax(np.hstack((输出预测,输出真实)),轴=1))

现在让我们来分析一下

np.hstack((M1,M2))
将矩阵堆叠为[M1 | M2],这两个矩阵在您的案例中都是向量

np.amax(M,轴=1)
为每一行创建沿x轴的最大值向量

np.divide(M1,M2)
对矩阵执行元素级除法,因此仍然可以得到向量

np.sum(M)
提供矩阵M的标量和

要了解有关这些功能的更多信息,请访问


如果您有任何疑问,请在下面进行注释。

对于矢量化表单,axis=1做什么?因此基本上,
np.hstack()
将在单个数组中组合输出pred和输出true,并选择最大值。因此,损失将只是使用
np.sum()
函数的单个定标器让我们进行一些小的修正
np.amax()
而不是
np.max()
,所以我这样做了,它说:hstack()接受1个位置参数,但2个被相应地指定,更多信息可在chat@Corse中获得