using Microsoft.VisualStudio.TestTools.UnitTesting; using NumSharp; using Tensorflow; using Tensorflow.Keras.Losses; using static Tensorflow.Binding; using static Tensorflow.KerasApi; namespace TensorFlowNET.UnitTest.Keras { [TestClass] public class MeanSquaredLogarithmicError { //https://keras.io/api/losses/regression_losses/ NDArray y_true_float = new float[,] { { 0.0f, 1.0f }, { 0.0f, 0.0f } }; NDArray y_pred_float = new float[,] { { 1.0f, 1.0f }, { 1.0f, 0.0f } }; [TestMethod] public void _Default() { //>>> # Using 'auto'/'sum_over_batch_size' reduction type. //>>> msle = tf.keras.losses.MeanSquaredLogarithmicError() //>>> msle(y_true, y_pred).numpy() //0.240 var loss = keras.losses.MeanSquaredLogarithmicError(); var call = loss.Call(y_true_float, y_pred_float); Assert.AreEqual((NDArray)(0.24022643f), call.numpy()); } [TestMethod] public void _Sample_Weight() { //>>> # Calling with 'sample_weight'. //>>> msle(y_true, y_pred, sample_weight =[0.7, 0.3]).numpy() //0.120 var loss = keras.losses.MeanSquaredLogarithmicError(); var call = loss.Call(y_true_float, y_pred_float, sample_weight: (NDArray)new float[] { 0.7f, 0.3f }); Assert.AreEqual((NDArray)(0.12011322f), call.numpy()); } [TestMethod] public void _SUM() { //>>> # Using 'sum' reduction type. //>>> msle = tf.keras.losses.MeanSquaredLogarithmicError( //... reduction = tf.keras.losses.Reduction.SUM) //>>> msle(y_true, y_pred).numpy() //0.480 var loss = keras.losses.MeanSquaredLogarithmicError( reduction: ReductionV2.SUM); var call = loss.Call(y_true_float, y_pred_float); Assert.AreEqual((NDArray)(0.48045287f), call.numpy()); } [TestMethod] public void _None() { //>>> # Using 'none' reduction type. //>>> msle = tf.keras.losses.MeanSquaredLogarithmicError( //... reduction = tf.keras.losses.Reduction.NONE) //>>> msle(y_true, y_pred).numpy() //array([0.240, 0.240], dtype = float32) var loss = keras.losses.MeanSquaredLogarithmicError(reduction: ReductionV2.NONE); var call = loss.Call(y_true_float, y_pred_float); Assert.AreEqual((NDArray)new float[] { 0.24022643f, 0.24022643f }, call.numpy()); } } }