如何在keras模型中使用张量流损失函数?

2024-05-16 12:52:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我用的是TensorFlow1.14,我用Keras设计了一个模型。我想在编译模型时使用tf.nn.sparse_softmax_cross_entropy_with_logits,但在Keras中没有看到任何等价的损失函数。有什么办法可以把这个用在我的模特身上吗?你知道吗

我当前要编译的代码:

model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

谢谢你的帮助。你知道吗


Tags: 函数代码模型tfwithnnkerasentropy
1条回答
网友
1楼 · 发布于 2024-05-16 12:52:36

可以使用tf.losses.sparse_categorical_crossentropy,将from_logits设置为True,并将其包装到函数中

import tensorflow as tf

def my_tf_loss_fn(y_true, y_pred):
    return tf.losses.sparse_categorical_crossentropy(y_true, y_pred, from_logits=True)

model = tf.keras.applications.ResNet50()
model.compile(loss=my_tf_loss_fn, optimizer='adam')

但是如果你坚持使用tf.nn.sparse_softmax_cross_entropy_with_logits 我想不出一个干净的方法来做这件事,但这是可行的

import tensorflow as tf

def my_tf_loss_fn(y_true, y_pred):
    return tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y_true, logits=y_pred)

model = tf.keras.applications.ResNet50()
dummy_tensor = tf.placeholder(dtype=tf.int32, shape=[None])
model.compile(loss=my_tf_loss_fn, optimizer='adam', target_tensors=dummy_tensor)

相关问题 更多 >