diff --git a/test/TensorFlowNET.UnitTest/gradients_test/GradientsTest.cs b/test/TensorFlowNET.UnitTest/gradients_test/GradientsTest.cs index b9149c88..c50319fd 100644 --- a/test/TensorFlowNET.UnitTest/gradients_test/GradientsTest.cs +++ b/test/TensorFlowNET.UnitTest/gradients_test/GradientsTest.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; using Microsoft.VisualStudio.TestTools.UnitTesting; using NumSharp; using Tensorflow; @@ -64,6 +63,74 @@ namespace TensorFlowNET.UnitTest.gradients_test } } + [TestMethod] + public void testTanhGradient() + { + var a = tf.constant(1f); + var b = tf.tanh(a); + var g = tf.gradients(b, a); + using (var sess = tf.Session()) + { + var result = sess.run(g); + var actual = result[0].GetData()[0]; + self.assertEquals(0.41997434127f, actual); + } + } + + + [TestMethod] + public void testLgammaGrad() + { + var a = tf.constant(5f); + var b = tf.lgamma(a); + var g = tf.gradients(b, a); + using (var sess = tf.Session()) + { + var result = sess.run(new object[] { g, b }); + var actualDeriv = result[0].GetData()[0]; + var actual = result[1].GetData()[0]; + self.assertEquals(1.5061177f, actualDeriv); + self.assertEquals(3.17805386f, actual); + } + } + + [TestMethod] + public void testSliceGrad() + { + var a = tf.tanh(tf.constant(new[] { 2f, 3f }, shape: new[] { 2, 1 })); + var b = tf.strided_slice(a, + tf.constant(new[] { 0 }, TF_DataType.TF_INT32, new[] { 1 }), + tf.constant(new[] { 1 }, TF_DataType.TF_INT32, new[] { 1 }), + tf.constant(new[] { 1 }, TF_DataType.TF_INT32, new[] { 1 }) + ); + var g = tf.gradients(b, a); + using (var sess = tf.Session()) + { + var result = sess.run(new object[] { g, b }); + var actualDeriv = result[0].GetData()[0]; + var actual = result[1].GetData()[0]; + self.assertEquals(1.5061177f, actualDeriv); + self.assertEquals(3.17805386f, actual); + } + } + + + [TestMethod] + public void testConcatGrad() + { + var a1 = tf.constant(new[] { 2f }, shape: new[] { 1 }); + var a2 = tf.constant(new[] { 3f }, shape: new[] { 1 }); + var a = tf.concat(new List(new[] {a1, a2}), 0); + var g = tf.gradients(a, a1); + using (var sess = tf.Session()) + { + var result = sess.run(new object[] { g, a }); + var actualDeriv = result[0].GetData()[0]; + var actual = result[1].GetData()[0]; + self.assertEquals(1f, actualDeriv); + self.assertEquals(2f, actual); + } + } [Ignore("TODO")] [TestMethod]