Как использовать функцию потери тензорного потока с моделью кераса? - PullRequest
0 голосов
/ 24 октября 2019

Я использую Tensorflow 1.14, и я разработал модель с использованием Keras. Я хочу использовать tf.nn.sparse_softmax_cross_entropy_with_logits при компиляции своей модели, но я не вижу никакой эквивалентной функции потерь в Keras. Есть ли способ, которым я могу использовать это с моей моделью?

Мой текущий код для компиляции:

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

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 24 октября 2019

Вы можете использовать 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...