将参数传递到keras损失函数的语法是什么?
我试图给出我的keras神经网络分类交叉熵损失,from_logits=True。但是,我不确定如何将其传递到代码中,因为它要求我指定目标和输出 通常我可以使用:将参数传递到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
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)