1

我有例如 100 个样本(100 个输出)。我想为每个样本编写带有“权重”的自定义损失函数:

(target[j] - prediction[j])**2 + f(j),

其中 f 是自定义数值函数(例如j**2)。我该怎么做现在我只能创建“通用”损失函数(没有“权重”):

def customloss(target,prediction):
   return (target - prediction)**2

问题是我无法获得索引 (j)。

4

1 回答 1

0

这可能不再相关,但您可以创建带有输入层的第二个网络。向那个输入层传递一个代表你的权重的数组。

现在包装你的模型:

weight_layer = Input(shape=(None,dim))
m2 = Model(input=[m1.inputs,weight_layer],output=m1.outputs)

由于损失函数的输出也是张量,因此您可以将 weight_layer 添加到损失中。例如:

def customloss(y_true,y_pred):
    return K.binary_crossentropy(y_true,y_pred) + weight_layer
m2.compile(optimizer='adam',loss=customloss,...)
于 2018-11-24T17:22:40.607 回答