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.

CApi.Eager.OpGetInputAndOutputLengths.cs 2.7 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using Microsoft.VisualStudio.TestTools.UnitTesting;
  2. using System;
  3. using Tensorflow;
  4. using Tensorflow.Eager;
  5. using Buffer = System.Buffer;
  6. namespace TensorFlowNET.UnitTest.NativeAPI
  7. {
  8. public partial class CApiEagerTest
  9. {
  10. /// <summary>
  11. /// TEST(CAPI, TestTFE_OpGetInputAndOutputLengths)
  12. /// </summary>
  13. [TestMethod]
  14. public unsafe void OpGetInputAndOutputLengths()
  15. {
  16. using var status = TF_NewStatus();
  17. var opts = TFE_NewContextOptions();
  18. using var ctx = TFE_NewContext(opts, status);
  19. CHECK_EQ(TF_OK, TF_GetCode(status), TF_Message(status));
  20. TFE_DeleteContextOptions(opts);
  21. var input1 = TestMatrixTensorHandle();
  22. var input2 = TestMatrixTensorHandle();
  23. var identityOp = TFE_NewOp(ctx, "IdentityN", status);
  24. CHECK_EQ(TF_OK, TF_GetCode(status), TF_Message(status));
  25. // Try to retrieve lengths before building the attributes (should fail)
  26. EXPECT_EQ(-1, TFE_OpGetInputLength(identityOp, "input", status));
  27. CHECK_NE(TF_OK, TF_GetCode(status), TF_Message(status));
  28. EXPECT_EQ(-1, TFE_OpGetOutputLength(identityOp, "output", status));
  29. CHECK_NE(TF_OK, TF_GetCode(status), TF_Message(status));
  30. var inputs = new IntPtr[] { input1, input2 };
  31. TFE_OpAddInputList(identityOp, inputs, 2, status);
  32. CHECK_EQ(TF_OK, TF_GetCode(status), TF_Message(status));
  33. // Try to retrieve lengths before executing the op (should work)
  34. EXPECT_EQ(2, TFE_OpGetInputLength(identityOp, "input", status));
  35. CHECK_EQ(TF_OK, TF_GetCode(status), TF_Message(status));
  36. EXPECT_EQ(2, TFE_OpGetOutputLength(identityOp, "output", status));
  37. CHECK_EQ(TF_OK, TF_GetCode(status), TF_Message(status));
  38. var retvals = new IntPtr[2];
  39. int num_retvals = 2;
  40. TFE_Execute(identityOp, retvals, ref num_retvals, status);
  41. EXPECT_EQ(TF_OK, TF_GetCode(status), TF_Message(status));
  42. // Try to retrieve lengths after executing the op (should work)
  43. EXPECT_EQ(2, TFE_OpGetInputLength(identityOp, "input", status));
  44. CHECK_EQ(TF_OK, TF_GetCode(status), TF_Message(status));
  45. EXPECT_EQ(2, TFE_OpGetOutputLength(identityOp, "output", status));
  46. CHECK_EQ(TF_OK, TF_GetCode(status), TF_Message(status));
  47. TFE_DeleteOp(identityOp);
  48. TFE_DeleteTensorHandle(input1);
  49. TFE_DeleteTensorHandle(input2);
  50. TFE_DeleteTensorHandle(retvals[0]);
  51. TFE_DeleteTensorHandle(retvals[1]);
  52. }
  53. }
  54. }