From b72c135a939446bf532dd50b84c0bfc0e9c336ea Mon Sep 17 00:00:00 2001 From: AsakusaRinne Date: Sat, 18 Feb 2023 13:15:37 +0800 Subject: [PATCH] Fix the keras.sparse_categorical_crossentropy. (#985) --- .../Losses/SparseCategoricalCrossentropy.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/TensorFlowNET.Keras/Losses/SparseCategoricalCrossentropy.cs b/src/TensorFlowNET.Keras/Losses/SparseCategoricalCrossentropy.cs index 0f6e4645b..b72412265 100644 --- a/src/TensorFlowNET.Keras/Losses/SparseCategoricalCrossentropy.cs +++ b/src/TensorFlowNET.Keras/Losses/SparseCategoricalCrossentropy.cs @@ -14,6 +14,13 @@ public override Tensor Apply(Tensor target, Tensor output, bool from_logits = fa { target = tf.cast(target, dtype: TF_DataType.TF_INT64); + if (!from_logits) + { + var epsilon = tf.constant(KerasApi.keras.backend.epsilon(), output.dtype); + output = tf.clip_by_value(output, epsilon, 1 - epsilon); + output = tf.log(output); + } + // Try to adjust the shape so that rank of labels = rank of logits - 1. var output_shape = array_ops.shape_v2(output); var output_rank = output.shape.ndim;