将参数传递到keras损失函数的语法是什么?

将参数传递到keras损失函数的语法是什么?,keras,syntax,Keras,Syntax,我试图给出我的keras神经网络分类交叉熵损失,from_logits=True。但是,我不确定如何将其传递到代码中,因为它要求我指定目标和输出 通常我可以使用: network.compile(sgd, loss='categorical_crossentropy'), 但现在我必须尝试一下: network.compile(sgd, loss=categorical_crossentropy(from_logits=True)) 这给了我一个错误: TypeError: categori

我试图给出我的keras神经网络分类交叉熵损失,from_logits=True。但是,我不确定如何将其传递到代码中,因为它要求我指定目标和输出

通常我可以使用:

network.compile(sgd, loss='categorical_crossentropy'),
但现在我必须尝试一下:

network.compile(sgd, loss=categorical_crossentropy(from_logits=True))
这给了我一个错误:

TypeError: categorical_crossentropy() missing 2 required positional arguments: 'target' and 'output'
我能想到的最好办法是:

network.compile(sgd, loss=categorical_crossentropy(y_true, network.output, from_logits=True))

我不知道该怎么说才对,因为这不是网络的一部分。我在网上浏览了一下,但没有找到任何具体的方法,奇怪的是,包括keras文档。

keras损失需要严格的两个参数:
y_-true
(地面真实数据)和
y_-pred
(模型输出)

如果要使用具有不同签名的函数,必须将其包装以遵循正确的签名

import keras.backend as K

def cc_from_logits(y_true, y_pred):
    return K.categorical_crossentropy(y_true, y_pred, from_logits=True, axis=-1)

model.compile(loss=cc_from_logits)

我确信
cc\u with\u logits
softmax+“分类交叉熵”
的结果完全相同

您是否尝试过,
tf.keras.loss.CategoricalCrossentropy(from_logits=True)