You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

MeanSquaredLogarithmicError.Test.cs 2.6 kB

4 years ago
4 years ago
4 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using Microsoft.VisualStudio.TestTools.UnitTesting;
  2. using Tensorflow.NumPy;
  3. using Tensorflow;
  4. using Tensorflow.Keras.Losses;
  5. using static Tensorflow.Binding;
  6. using static Tensorflow.KerasApi;
  7. namespace TensorFlowNET.Keras.UnitTest
  8. {
  9. [TestClass]
  10. public class MeanSquaredLogarithmicError
  11. {
  12. //https://keras.io/api/losses/regression_losses/
  13. NDArray y_true_float = new float[,] { { 0.0f, 1.0f }, { 0.0f, 0.0f } };
  14. NDArray y_pred_float = new float[,] { { 1.0f, 1.0f }, { 1.0f, 0.0f } };
  15. [TestMethod]
  16. public void _Default()
  17. {
  18. //>>> # Using 'auto'/'sum_over_batch_size' reduction type.
  19. //>>> msle = tf.keras.losses.MeanSquaredLogarithmicError()
  20. //>>> msle(y_true, y_pred).numpy()
  21. //0.240
  22. var loss = keras.losses.MeanSquaredLogarithmicError();
  23. var call = loss.Call(y_true_float, y_pred_float);
  24. Assert.AreEqual((NDArray)(0.24022643f), call.numpy());
  25. }
  26. [TestMethod]
  27. public void _Sample_Weight()
  28. {
  29. //>>> # Calling with 'sample_weight'.
  30. //>>> msle(y_true, y_pred, sample_weight =[0.7, 0.3]).numpy()
  31. //0.120
  32. var loss = keras.losses.MeanSquaredLogarithmicError();
  33. var call = loss.Call(y_true_float, y_pred_float, sample_weight: (NDArray)new float[] { 0.7f, 0.3f });
  34. Assert.AreEqual((NDArray)(0.12011322f), call.numpy());
  35. }
  36. [TestMethod]
  37. public void _SUM()
  38. {
  39. //>>> # Using 'sum' reduction type.
  40. //>>> msle = tf.keras.losses.MeanSquaredLogarithmicError(
  41. //... reduction = tf.keras.losses.Reduction.SUM)
  42. //>>> msle(y_true, y_pred).numpy()
  43. //0.480
  44. var loss = keras.losses.MeanSquaredLogarithmicError( reduction: ReductionV2.SUM);
  45. var call = loss.Call(y_true_float, y_pred_float);
  46. Assert.AreEqual((NDArray)(0.48045287f), call.numpy());
  47. }
  48. [TestMethod]
  49. public void _None()
  50. {
  51. //>>> # Using 'none' reduction type.
  52. //>>> msle = tf.keras.losses.MeanSquaredLogarithmicError(
  53. //... reduction = tf.keras.losses.Reduction.NONE)
  54. //>>> msle(y_true, y_pred).numpy()
  55. //array([0.240, 0.240], dtype = float32)
  56. var loss = keras.losses.MeanSquaredLogarithmicError(reduction: ReductionV2.NONE);
  57. var call = loss.Call(y_true_float, y_pred_float);
  58. Assert.AreEqual((NDArray)new float[] { 0.24022643f, 0.24022643f }, call.numpy());
  59. }
  60. }
  61. }