using Microsoft.VisualStudio.TestTools.UnitTesting; using static Tensorflow.Binding; namespace TensorFlowNET.UnitTest.ManagedAPI { [TestClass] public class GradientTest { [TestMethod] public void GradientFloatTest() { var x = tf.Variable(3.0, dtype: tf.float32); using var tape = tf.GradientTape(); var y = tf.square(x); var y_grad = tape.gradient(y, x); Assert.AreEqual(9.0f, (float)y); } [TestMethod] public void GradientDefaultTest() { var x = tf.Variable(3.0); using var tape = tf.GradientTape(); var y = tf.square(x); var y_grad = tape.gradient(y, x); Assert.AreEqual(9.0, (double)y); } [TestMethod] public void GradientDoubleTest() { var x = tf.Variable(3.0, dtype: tf.float64); using var tape = tf.GradientTape(); var y = tf.square(x); var y_grad = tape.gradient(y, x); Assert.AreEqual(9.0, (double)y); } [TestMethod] public void GradientOperatorMulTest() { var x = tf.constant(0f); var w = tf.Variable(new float[] { 1, 1 }); using var gt = tf.GradientTape(); var y = x * w; var gr = gt.gradient(y, w); Assert.AreEqual(new float[] { 0, 0 }, gr.numpy()); } } }