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.

Diagnostician.cs 2.5 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Text;
  5. using System.Linq;
  6. using static Tensorflow.Binding;
  7. using System.Text.RegularExpressions;
  8. namespace Tensorflow
  9. {
  10. public class Diagnostician
  11. {
  12. public void Diagnose(string log)
  13. {
  14. var lines = File.ReadAllLines(log);
  15. foreach(var (i, line) in enumerate(lines))
  16. {
  17. if(line.StartsWith("New Tensor "))
  18. {
  19. var pointers = Regex.Matches(line, "0x[0-9a-f]{16}");
  20. var tensorHandle = pointers[0].Value;
  21. var tensorDataHandle = pointers[1].Value;
  22. if (lines.Skip(i).Count(x => x.StartsWith("Delete Tensor ")
  23. && x.Contains(tensorHandle)
  24. && x.Contains(tensorDataHandle)) == 0)
  25. Console.WriteLine(line);
  26. }
  27. else if (line.StartsWith("New EagerTensorHandle "))
  28. {
  29. var pointers = Regex.Matches(line, "0x[0-9a-f]{16}");
  30. var tensorHandle = pointers[0].Value;
  31. var del = $"Delete EagerTensorHandle {tensorHandle}";
  32. if (lines.Skip(i).Count(x => x == del) == 0)
  33. Console.WriteLine(line);
  34. }
  35. else if (line.StartsWith("Take EagerTensorHandle "))
  36. {
  37. var pointers = Regex.Matches(line, "0x[0-9a-f]{16}");
  38. var eagerTensorHandle = pointers[0].Value;
  39. var tensorHandle = pointers[1].Value;
  40. var delTensor = $"Delete Tensor {tensorHandle}";
  41. var delEagerTensor = $"Delete EagerTensorHandle {eagerTensorHandle}";
  42. if (lines.Skip(i).Count(x => x.StartsWith(delTensor)) == 0
  43. || lines.Skip(i).Count(x => x.StartsWith(delEagerTensor)) == 0)
  44. Console.WriteLine(line);
  45. }
  46. else if (line.StartsWith("Created Resource "))
  47. {
  48. var pointers = Regex.Matches(line, "0x[0-9a-f]{16}");
  49. var eagerTensorHandle = pointers[0].Value;
  50. var delTensor = $"Deleted Resource {eagerTensorHandle}";
  51. if (lines.Skip(i).Count(x => x.StartsWith(delTensor)) == 0)
  52. Console.WriteLine(line);
  53. }
  54. }
  55. }
  56. }
  57. }