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.

GraphTest.cs 3.8 kB

6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. using Microsoft.VisualStudio.TestTools.UnitTesting;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. using Tensorflow;
  6. namespace TensorFlowNET.UnitTest
  7. {
  8. [TestClass]
  9. public class GraphTest
  10. {
  11. /// <summary>
  12. /// Port from c_api_test.cc
  13. /// `TEST(CAPI, Graph)`
  14. /// </summary>
  15. [TestMethod]
  16. public void c_api_Graph()
  17. {
  18. var s = new Status();
  19. var graph = new Graph();
  20. // Make a placeholder operation.
  21. var feed = c_test_util.Placeholder(graph, s);
  22. Assert.AreEqual("feed", feed.Name);
  23. Assert.AreEqual("Placeholder", feed.OpType);
  24. Assert.AreEqual("", feed.Device);
  25. Assert.AreEqual(1, feed.NumOutputs);
  26. Assert.AreEqual(TF_DataType.TF_INT32, feed.OutputType(0));
  27. Assert.AreEqual(1, feed.OutputListLength("output"));
  28. Assert.AreEqual(0, feed.NumInputs);
  29. Assert.AreEqual(0, feed.OutputNumConsumers(0));
  30. Assert.AreEqual(0, feed.NumControlInputs);
  31. Assert.AreEqual(0, feed.NumControlOutputs);
  32. AttrValue attr_value = null;
  33. Assert.IsTrue(c_test_util.GetAttrValue(feed, "dtype", ref attr_value, s));
  34. Assert.AreEqual(attr_value.Type, DataType.DtInt32);
  35. // Test not found errors in TF_Operation*() query functions.
  36. Assert.AreEqual(-1, c_api.TF_OperationOutputListLength(feed, "bogus", s));
  37. Assert.AreEqual(TF_Code.TF_INVALID_ARGUMENT, s.Code);
  38. Assert.IsFalse(c_test_util.GetAttrValue(feed, "missing", ref attr_value, s));
  39. Assert.AreEqual("Operation 'feed' has no attr named 'missing'.", s.Message);
  40. // Make a constant oper with the scalar "3".
  41. var three = c_test_util.ScalarConst(3, graph, s);
  42. Assert.AreEqual(TF_Code.TF_OK, s.Code);
  43. // Add oper.
  44. var add = c_test_util.Add(feed, three, graph, s);
  45. Assert.AreEqual(TF_Code.TF_OK, s.Code);
  46. // Test TF_Operation*() query functions.
  47. Assert.AreEqual("add", add.Name);
  48. Assert.AreEqual("AddN", add.OpType);
  49. Assert.AreEqual("", add.Device);
  50. Assert.AreEqual(1, add.NumOutputs);
  51. Assert.AreEqual(TF_DataType.TF_INT32, add.OutputType(0));
  52. Assert.AreEqual(1, add.OutputListLength("sum"));
  53. Assert.AreEqual(TF_Code.TF_OK, s.Code);
  54. Assert.AreEqual(2, add.InputListLength("inputs"));
  55. Assert.AreEqual(TF_Code.TF_OK, s.Code);
  56. Assert.AreEqual(TF_DataType.TF_INT32, add.InputType(0));
  57. Assert.AreEqual(TF_DataType.TF_INT32, add.InputType(1));
  58. var add_in_0 = add.Input(0);
  59. Assert.AreEqual(feed, add_in_0.oper);
  60. Assert.AreEqual(0, add_in_0.index);
  61. var add_in_1 = add.Input(1);
  62. Assert.AreEqual(three, add_in_1.oper);
  63. Assert.AreEqual(0, add_in_1.index);
  64. Assert.AreEqual(0, add.OutputNumConsumers(0));
  65. Assert.AreEqual(0, add.NumControlInputs);
  66. Assert.AreEqual(0, add.NumControlOutputs);
  67. Assert.IsTrue(c_test_util.GetAttrValue(add, "T", ref attr_value, s));
  68. Assert.AreEqual(DataType.DtInt32, attr_value.Type);
  69. Assert.IsTrue(c_test_util.GetAttrValue(add, "N", ref attr_value, s));
  70. Assert.AreEqual(2, attr_value.I);
  71. // Placeholder oper now has a consumer.
  72. Assert.AreEqual(1, feed.OutputNumConsumers(0));
  73. TF_Input[] feed_port = feed.OutputConsumers(0, 1);
  74. Assert.AreEqual(1, feed_port.Length);
  75. Assert.AreEqual(add, feed_port[0].oper);
  76. Assert.AreEqual(0, feed_port[0].index);
  77. }
  78. }
  79. }

tensorflow框架的.NET版本,提供了丰富的特性和API,可以借此很方便地在.NET平台下搭建深度学习训练与推理流程。

Contributors (1)