kann-schema.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. export const kann = {};
  2. kann.Model = class Model {
  3. static identifier(reader) {
  4. return reader.identifier === 'KaNN';
  5. }
  6. static create(reader) {
  7. return kann.Model.decode(reader, reader.root);
  8. }
  9. static decode(reader, position) {
  10. const $ = new kann.Model();
  11. $.graph = reader.tables(position, 4, kann.Graph);
  12. return $;
  13. }
  14. };
  15. kann.Graph = class Graph {
  16. static decode(reader, position) {
  17. const $ = new kann.Graph();
  18. $.arcs = reader.tables(position, 4, kann.Arc);
  19. $.nodes = reader.tables(position, 6, kann.Node);
  20. $.inputs = reader.strings_(position, 8);
  21. $.outputs = reader.strings_(position, 10);
  22. return $;
  23. }
  24. };
  25. kann.Arc = class Arc {
  26. static decode(reader, position) {
  27. const $ = new kann.Arc();
  28. $.name = reader.string_(position, 4, null);
  29. $.type = reader.string_(position, 6, null);
  30. $.attributes = reader.tables(position, 8, kann.Attribute);
  31. return $;
  32. }
  33. };
  34. kann.Node = class Node {
  35. static decode(reader, position) {
  36. const $ = new kann.Node();
  37. $.name = reader.string_(position, 4, null);
  38. $.type = reader.string_(position, 6, null);
  39. $.inputs = reader.strings_(position, 8);
  40. $.outputs = reader.strings_(position, 10);
  41. $.attributes = reader.tables(position, 12, kann.Attribute);
  42. $.tensor = reader.table(position, 14, kann.Param);
  43. $.relu = reader.bool_(position, 16, false);
  44. $.params = reader.tables(position, 18, kann.Param);
  45. return $;
  46. }
  47. };
  48. kann.Param = class Param {
  49. static decode(reader, position) {
  50. const $ = new kann.Param();
  51. $.name = reader.string_(position, 4, null);
  52. $.type = reader.string_(position, 6, null);
  53. $.shape = reader.array(position, 8, Int32Array);
  54. $.value = reader.table(position, 10, kann.Data);
  55. $.scale = reader.table(position, 12, kann.Data);
  56. $.zero_point = reader.table(position, 14, kann.Data);
  57. return $;
  58. }
  59. };
  60. kann.Attribute = class Attribute {
  61. static decode(reader, position) {
  62. const $ = new kann.Attribute();
  63. $.name = reader.string_(position, 4, null);
  64. $.type = reader.string_(position, 6, null);
  65. $.value = reader.table(position, 8, kann.Data);
  66. $.attributes = reader.tables(position, 10, kann.Attribute);
  67. return $;
  68. }
  69. };
  70. kann.Data = class Data {
  71. static decode(reader, position) {
  72. const $ = new kann.Data();
  73. $.type = reader.string_(position, 4, null);
  74. $.value_string = reader.string_(position, 6, null);
  75. $.value_float = reader.float64_(position, 8, 0);
  76. $.value_int = reader.int64_(position, 10, 0n);
  77. $.value_uint = reader.uint64_(position, 12, 0n);
  78. $.list_string = reader.strings_(position, 14);
  79. $.list_float = reader.array(position, 16, Float64Array);
  80. $.list_int = reader.int64s_(position, 18);
  81. $.list_uint = reader.uint64s_(position, 20);
  82. return $;
  83. }
  84. };