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.

SessionTest.cs 2.6 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using Microsoft.VisualStudio.TestTools.UnitTesting;
  2. using System;
  3. using System.Collections.Generic;
  4. namespace Tensorflow.Native.UnitTest.Sessions
  5. {
  6. [TestClass]
  7. public class SessionTest : CApiTest
  8. {
  9. /// <summary>
  10. /// tensorflow\c\c_api_test.cc
  11. /// `TEST(CAPI, Session)`
  12. /// </summary>
  13. [TestMethod]
  14. public void Session()
  15. {
  16. using var s = new Status();
  17. using var graph = new Graph();
  18. // Make a placeholder operation.
  19. var feed = c_test_util.Placeholder(graph, s);
  20. // Make a constant operation with the scalar "2".
  21. var two = c_test_util.ScalarConst(2, graph, s);
  22. // Add operation.
  23. var add = c_test_util.Add(feed, two, graph, s);
  24. var csession = new CSession(graph, s);
  25. ASSERT_EQ(TF_Code.TF_OK, s.Code);
  26. // Run the graph.
  27. var inputs = new Dictionary<Operation, Tensor>();
  28. inputs.Add(feed, new Tensor(3));
  29. csession.SetInputs(inputs);
  30. var outputs = new TF_Output[] { new TF_Output(add, 0) };
  31. csession.SetOutputs(outputs);
  32. csession.Run(s);
  33. Tensor outTensor = csession.output_tensor(0);
  34. EXPECT_EQ(TF_DataType.TF_INT32, outTensor.dtype);
  35. EXPECT_EQ(0, outTensor.ndim);
  36. ASSERT_EQ((ulong)sizeof(uint), outTensor.bytesize);
  37. var output_contents = outTensor.ToArray<int>();
  38. EXPECT_EQ(3 + 2, output_contents[0]);
  39. // Add another operation to the graph.
  40. var neg = c_test_util.Neg(add, graph, s);
  41. ASSERT_EQ(TF_Code.TF_OK, s.Code);
  42. // Run up to the new operation.
  43. inputs = new Dictionary<Operation, Tensor>();
  44. inputs.Add(feed, new Tensor(7));
  45. csession.SetInputs(inputs);
  46. outputs = new TF_Output[] { new TF_Output(neg, 0) };
  47. csession.SetOutputs(outputs);
  48. csession.Run(s);
  49. ASSERT_EQ(TF_Code.TF_OK, s.Code);
  50. outTensor = csession.output_tensor(0);
  51. ASSERT_TRUE(outTensor != IntPtr.Zero);
  52. EXPECT_EQ(TF_DataType.TF_INT32, outTensor.dtype);
  53. EXPECT_EQ(0, outTensor.ndim); // scalar
  54. ASSERT_EQ((ulong)sizeof(uint), outTensor.bytesize);
  55. output_contents = outTensor.ToArray<int>();
  56. EXPECT_EQ(-(7 + 2), output_contents[0]);
  57. // Clean up
  58. csession.CloseAndDelete(s);
  59. ASSERT_EQ(TF_Code.TF_OK, s.Code);
  60. }
  61. }
  62. }