7254f7b4d1
Build / Build (macos-latest) (push) Has been cancelled
Build / Build (ubuntu-latest) (push) Has been cancelled
Build / Build (windows-latest) (push) Has been cancelled
Build / Analyze (javascript) (push) Has been cancelled
Build / Analyze (python) (push) Has been cancelled
102 lines
3.0 KiB
JavaScript
102 lines
3.0 KiB
JavaScript
|
|
export const kann = {};
|
|
|
|
kann.Model = class Model {
|
|
|
|
static identifier(reader) {
|
|
return reader.identifier === 'KaNN';
|
|
}
|
|
|
|
static create(reader) {
|
|
return kann.Model.decode(reader, reader.root);
|
|
}
|
|
|
|
static decode(reader, position) {
|
|
const $ = new kann.Model();
|
|
$.graph = reader.tables(position, 4, kann.Graph);
|
|
return $;
|
|
}
|
|
};
|
|
|
|
kann.Graph = class Graph {
|
|
|
|
static decode(reader, position) {
|
|
const $ = new kann.Graph();
|
|
$.arcs = reader.tables(position, 4, kann.Arc);
|
|
$.nodes = reader.tables(position, 6, kann.Node);
|
|
$.inputs = reader.strings_(position, 8);
|
|
$.outputs = reader.strings_(position, 10);
|
|
return $;
|
|
}
|
|
};
|
|
|
|
kann.Arc = class Arc {
|
|
|
|
static decode(reader, position) {
|
|
const $ = new kann.Arc();
|
|
$.name = reader.string_(position, 4, null);
|
|
$.type = reader.string_(position, 6, null);
|
|
$.attributes = reader.tables(position, 8, kann.Attribute);
|
|
return $;
|
|
}
|
|
};
|
|
|
|
kann.Node = class Node {
|
|
|
|
static decode(reader, position) {
|
|
const $ = new kann.Node();
|
|
$.name = reader.string_(position, 4, null);
|
|
$.type = reader.string_(position, 6, null);
|
|
$.inputs = reader.strings_(position, 8);
|
|
$.outputs = reader.strings_(position, 10);
|
|
$.attributes = reader.tables(position, 12, kann.Attribute);
|
|
$.tensor = reader.table(position, 14, kann.Param);
|
|
$.relu = reader.bool_(position, 16, false);
|
|
$.params = reader.tables(position, 18, kann.Param);
|
|
return $;
|
|
}
|
|
};
|
|
|
|
kann.Param = class Param {
|
|
|
|
static decode(reader, position) {
|
|
const $ = new kann.Param();
|
|
$.name = reader.string_(position, 4, null);
|
|
$.type = reader.string_(position, 6, null);
|
|
$.shape = reader.array(position, 8, Int32Array);
|
|
$.value = reader.table(position, 10, kann.Data);
|
|
$.scale = reader.table(position, 12, kann.Data);
|
|
$.zero_point = reader.table(position, 14, kann.Data);
|
|
return $;
|
|
}
|
|
};
|
|
|
|
kann.Attribute = class Attribute {
|
|
|
|
static decode(reader, position) {
|
|
const $ = new kann.Attribute();
|
|
$.name = reader.string_(position, 4, null);
|
|
$.type = reader.string_(position, 6, null);
|
|
$.value = reader.table(position, 8, kann.Data);
|
|
$.attributes = reader.tables(position, 10, kann.Attribute);
|
|
return $;
|
|
}
|
|
};
|
|
|
|
kann.Data = class Data {
|
|
|
|
static decode(reader, position) {
|
|
const $ = new kann.Data();
|
|
$.type = reader.string_(position, 4, null);
|
|
$.value_string = reader.string_(position, 6, null);
|
|
$.value_float = reader.float64_(position, 8, 0);
|
|
$.value_int = reader.int64_(position, 10, 0n);
|
|
$.value_uint = reader.uint64_(position, 12, 0n);
|
|
$.list_string = reader.strings_(position, 14);
|
|
$.list_float = reader.array(position, 16, Float64Array);
|
|
$.list_int = reader.int64s_(position, 18);
|
|
$.list_uint = reader.uint64s_(position, 20);
|
|
return $;
|
|
}
|
|
};
|