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.

EagerOperation.cs 2.1 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using static Tensorflow.Binding;
  6. namespace Tensorflow.Eager
  7. {
  8. public class EagerOperation : Operation
  9. {
  10. public string Name { get; set; }
  11. public new int NumInputs;
  12. public IntPtr[] InputHandles { get; set; }
  13. public Tensor[] Inputs { get; set; }
  14. public new int NumOutputs;
  15. public IntPtr[] OutputHandles { get; set; }
  16. public Tensor[] Outputs { get; set; }
  17. public long[] SkipInputIndices { get; set; }
  18. public object[] Attrs { get; set; }
  19. public EagerOperation() : base(IntPtr.Zero)
  20. {
  21. }
  22. public override InputList inputs
  23. {
  24. get
  25. {
  26. if (_inputs_val == null)
  27. {
  28. _inputs_val = new InputList(Inputs);
  29. }
  30. return _inputs_val;
  31. }
  32. }
  33. public override Tensor[] outputs
  34. {
  35. get
  36. {
  37. if (_outputs == null)
  38. {
  39. _outputs = Outputs;
  40. }
  41. return _outputs;
  42. }
  43. }
  44. public override object get_attr(string attr_name)
  45. {
  46. object value = null;
  47. byte isList = 0;
  48. var attrType = c_api.TFE_OpNameGetAttrType(tf.context, Name, attr_name, ref isList, tf.status.Handle);
  49. switch (attrType)
  50. {
  51. case TF_AttrType.TF_ATTR_BOOL:
  52. value = get_attr_bool(attr_name);
  53. break;
  54. default:
  55. break;
  56. }
  57. return value;
  58. }
  59. public bool get_attr_bool(string attr_name)
  60. {
  61. for (int i = 0; i < Attrs.Length; i = i + 2)
  62. if (Attrs[i].Equals(attr_name))
  63. return Attrs[i + 1].Equals("1");
  64. throw new ValueError($"Can't find attr: {attr_name}");
  65. }
  66. public override string ToString()
  67. => $"tf.EagerOperation {Name}";
  68. }
  69. }