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.

TensorOperate.cs 3.0 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using FluentAssertions;
  2. using Microsoft.VisualStudio.TestTools.UnitTesting;
  3. using NumSharp;
  4. using System.Linq;
  5. using Tensorflow;
  6. using static Tensorflow.Binding;
  7. namespace TensorFlowNET.UnitTest.TF_API
  8. {
  9. [TestClass]
  10. public class TensorOperate
  11. {
  12. [TestMethod]
  13. public void TransposeTest()
  14. {
  15. var a = tf.constant(np.array(new[, , ,] { { { { 1, 11, 2, 22 } }, { { 3, 33, 4, 44 } } },
  16. { { { 5, 55, 6, 66 } }, { { 7, 77, 8, 88 } } } }));
  17. var b = tf.transpose(a, new[] { 3, 1, 2, 0 });
  18. var transpose_a = tf.constant(np.array(new[, , ,] { { { { 1, 5 } }, { { 3, 7 } } },
  19. { { { 11, 55 } }, { { 33, 77 } } }, { { { 2, 6 } }, { { 4, 8 } } },
  20. { { { 22, 66 } }, { { 44, 88 } } } }));
  21. Assert.IsTrue(Enumerable.SequenceEqual(new[] { 4, 2, 1, 2 }, b.shape));
  22. Assert.IsTrue(Enumerable.SequenceEqual(transpose_a.numpy().ToArray<int>(), b.numpy().ToArray<int>()));
  23. }
  24. [TestMethod]
  25. public void InitTensorTest()
  26. {
  27. var a = tf.constant(np.array(new[, ,]
  28. {
  29. { { 1 }, { 2 }, { 3 } },
  30. { { 4 }, { 5 }, { 6 } }
  31. }));
  32. Assert.IsTrue(Enumerable.SequenceEqual(new[] { 2, 3, 1 }, a.shape));
  33. var b = tf.constant(new[, ,]
  34. {
  35. { { 1 }, { 2 }, { 3 } },
  36. { { 4 }, { 5 }, { 6 } }
  37. });
  38. Assert.IsTrue(Enumerable.SequenceEqual(new[] { 2, 3, 1 }, b.shape));
  39. }
  40. [TestMethod]
  41. public void ConcatTest()
  42. {
  43. var a = tf.constant(new[,] { { 1, 2 }, { 3, 4 } });
  44. var b = tf.constant(new[,] { { 5, 6 }, { 7, 8 } });
  45. var c = tf.constant(new[,] { { 9, 10 }, { 11, 12 } });
  46. var concatValue = tf.concat(new[] { a, b, c }, axis: 0);
  47. Assert.IsTrue(Enumerable.SequenceEqual(new[] { 6, 2 }, concatValue.shape));
  48. }
  49. [TestMethod]
  50. public void ConcatDoubleTest()
  51. {
  52. var a = tf.constant(new[,] { { 1.0, 2.0 }, { 3.0, 4.0 } });
  53. var b = tf.constant(new[,] { { 5.0, 6.0 }, { 7.0, 8.0 } });
  54. var c = tf.constant(new[,] { { 9.0, 10.0 }, { 11.0, 12.0 } });
  55. var concatValue = tf.concat(new[] { a, b, c }, axis: 0);
  56. Assert.IsTrue(Enumerable.SequenceEqual(new[] { 6, 2 }, concatValue.shape));
  57. }
  58. [TestMethod]
  59. public void ConcatAndSplitTest()
  60. {
  61. var a = tf.constant(new[,] { { 1, 2 }, { 3, 4 } });
  62. var b = tf.constant(new[,] { { 5, 6 }, { 7, 8 } });
  63. var c = tf.constant(new[,] { { 9, 10 }, { 11, 12 } });
  64. var value = tf.concat(new[] { a, b, c }, axis: 0);
  65. var splitValue = tf.split(value, 3, axis: 0);
  66. Assert.AreEqual(3, splitValue.Length);
  67. Assert.IsTrue(Enumerable.SequenceEqual(new[] { 2, 2 }, splitValue[0].shape));
  68. }
  69. }
  70. }