首页 文章

用张量流切割keras中的损失函数输入

提问于
浏览
0

在Keras中,我有一个y_true的目标向量,它适合于具有一个输出神经元的网络 . y_true = [0,1,0,1,1 ....]我有一些收益[1,1,1,-5,1 ...]

我试图将支付作为额外参数放入keras的自定义损失函数中 . Keras只允许将两个参数传递给它(y_true和y_pred),但我还想传递分配给每个样本的支付 . 为此,我在y_true中添加了第二列,其中包含这些值 .

然后我尝试通过执行以下操作在损失函数中再次分离实际的y_true(第一列)和支付(第二列):

def custom_loss(y_true, y_pred)    
    # y_true has the payoffs in the second row
    payoffs = y_true[:, 1]
    payoffs = K.expand_dims(payoffs, 1)
    y_true = y_true[:, 0]
    y_true = K.expand_dims(y_true, 1))

    loss = K.binary_crossentropy(y_true, y_pred)
    return loss

这是我想要做的简化版本(在真实版本中,我将把收益整合到损失函数中) . 但是对于上面的例子,我希望损失函数与直接调用binary_cross entropy相同,只有y_true只包含y_true(没有任何支付) .

但是,结果不如预期,因为上面的自定义损失函数的精度值约为一半 .

可能是造成此错误的原因是什么?我没有正确切割y_true吗?

问题与this post中描述的内容有关(curiale在2017年12月12日的评论建议使用slice_stack,但问题是相同的) .

1 回答

  • 1

    我认为问题是我还需要自定义度量函数 .

相关问题