rknncli 0.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- rknncli/__init__.py +3 -0
- rknncli/cli.py +229 -0
- rknncli/parser.py +320 -0
- rknncli/schema/rknn/Graph.py +371 -0
- rknncli/schema/rknn/Model.py +422 -0
- rknncli/schema/rknn/Node.py +380 -0
- rknncli/schema/rknn/Tensor.py +697 -0
- rknncli/schema/rknn/Type1.py +94 -0
- rknncli/schema/rknn/Type2.py +255 -0
- rknncli/schema/rknn/Type3.py +94 -0
- rknncli/schema/rknn/__init__.py +0 -0
- rknncli-0.2.0.dist-info/METADATA +69 -0
- rknncli-0.2.0.dist-info/RECORD +16 -0
- rknncli-0.2.0.dist-info/WHEEL +5 -0
- rknncli-0.2.0.dist-info/entry_points.txt +2 -0
- rknncli-0.2.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
# automatically generated by the FlatBuffers compiler, do not modify
|
|
2
|
+
|
|
3
|
+
# namespace: rknn
|
|
4
|
+
|
|
5
|
+
import flatbuffers
|
|
6
|
+
from flatbuffers.compat import import_numpy
|
|
7
|
+
np = import_numpy()
|
|
8
|
+
|
|
9
|
+
class Graph(object):
|
|
10
|
+
__slots__ = ['_tab']
|
|
11
|
+
|
|
12
|
+
@classmethod
|
|
13
|
+
def GetRootAs(cls, buf, offset=0):
|
|
14
|
+
n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, offset)
|
|
15
|
+
x = Graph()
|
|
16
|
+
x.Init(buf, n + offset)
|
|
17
|
+
return x
|
|
18
|
+
|
|
19
|
+
@classmethod
|
|
20
|
+
def GetRootAsGraph(cls, buf, offset=0):
|
|
21
|
+
"""This method is deprecated. Please switch to GetRootAs."""
|
|
22
|
+
return cls.GetRootAs(buf, offset)
|
|
23
|
+
@classmethod
|
|
24
|
+
def GraphBufferHasIdentifier(cls, buf, offset, size_prefixed=False):
|
|
25
|
+
return flatbuffers.util.BufferHasIdentifier(buf, offset, b"\x52\x4B\x4E\x4E", size_prefixed=size_prefixed)
|
|
26
|
+
|
|
27
|
+
# Graph
|
|
28
|
+
def Init(self, buf, pos):
|
|
29
|
+
self._tab = flatbuffers.table.Table(buf, pos)
|
|
30
|
+
|
|
31
|
+
# Graph
|
|
32
|
+
def Tensors(self, j):
|
|
33
|
+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4))
|
|
34
|
+
if o != 0:
|
|
35
|
+
x = self._tab.Vector(o)
|
|
36
|
+
x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4
|
|
37
|
+
x = self._tab.Indirect(x)
|
|
38
|
+
from rknncli.schema.rknn.Tensor import Tensor
|
|
39
|
+
obj = Tensor()
|
|
40
|
+
obj.Init(self._tab.Bytes, x)
|
|
41
|
+
return obj
|
|
42
|
+
return None
|
|
43
|
+
|
|
44
|
+
# Graph
|
|
45
|
+
def TensorsLength(self):
|
|
46
|
+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4))
|
|
47
|
+
if o != 0:
|
|
48
|
+
return self._tab.VectorLen(o)
|
|
49
|
+
return 0
|
|
50
|
+
|
|
51
|
+
# Graph
|
|
52
|
+
def TensorsIsNone(self):
|
|
53
|
+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4))
|
|
54
|
+
return o == 0
|
|
55
|
+
|
|
56
|
+
# Graph
|
|
57
|
+
def Nodes(self, j):
|
|
58
|
+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
|
|
59
|
+
if o != 0:
|
|
60
|
+
x = self._tab.Vector(o)
|
|
61
|
+
x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4
|
|
62
|
+
x = self._tab.Indirect(x)
|
|
63
|
+
from rknncli.schema.rknn.Node import Node
|
|
64
|
+
obj = Node()
|
|
65
|
+
obj.Init(self._tab.Bytes, x)
|
|
66
|
+
return obj
|
|
67
|
+
return None
|
|
68
|
+
|
|
69
|
+
# Graph
|
|
70
|
+
def NodesLength(self):
|
|
71
|
+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
|
|
72
|
+
if o != 0:
|
|
73
|
+
return self._tab.VectorLen(o)
|
|
74
|
+
return 0
|
|
75
|
+
|
|
76
|
+
# Graph
|
|
77
|
+
def NodesIsNone(self):
|
|
78
|
+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
|
|
79
|
+
return o == 0
|
|
80
|
+
|
|
81
|
+
# Graph
|
|
82
|
+
def Inputs(self, j):
|
|
83
|
+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8))
|
|
84
|
+
if o != 0:
|
|
85
|
+
a = self._tab.Vector(o)
|
|
86
|
+
return self._tab.Get(flatbuffers.number_types.Int32Flags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 4))
|
|
87
|
+
return 0
|
|
88
|
+
|
|
89
|
+
# Graph
|
|
90
|
+
def InputsAsNumpy(self):
|
|
91
|
+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8))
|
|
92
|
+
if o != 0:
|
|
93
|
+
return self._tab.GetVectorAsNumpy(flatbuffers.number_types.Int32Flags, o)
|
|
94
|
+
return 0
|
|
95
|
+
|
|
96
|
+
# Graph
|
|
97
|
+
def InputsLength(self):
|
|
98
|
+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8))
|
|
99
|
+
if o != 0:
|
|
100
|
+
return self._tab.VectorLen(o)
|
|
101
|
+
return 0
|
|
102
|
+
|
|
103
|
+
# Graph
|
|
104
|
+
def InputsIsNone(self):
|
|
105
|
+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8))
|
|
106
|
+
return o == 0
|
|
107
|
+
|
|
108
|
+
# Graph
|
|
109
|
+
def Outputs(self, j):
|
|
110
|
+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(10))
|
|
111
|
+
if o != 0:
|
|
112
|
+
a = self._tab.Vector(o)
|
|
113
|
+
return self._tab.Get(flatbuffers.number_types.Int32Flags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 4))
|
|
114
|
+
return 0
|
|
115
|
+
|
|
116
|
+
# Graph
|
|
117
|
+
def OutputsAsNumpy(self):
|
|
118
|
+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(10))
|
|
119
|
+
if o != 0:
|
|
120
|
+
return self._tab.GetVectorAsNumpy(flatbuffers.number_types.Int32Flags, o)
|
|
121
|
+
return 0
|
|
122
|
+
|
|
123
|
+
# Graph
|
|
124
|
+
def OutputsLength(self):
|
|
125
|
+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(10))
|
|
126
|
+
if o != 0:
|
|
127
|
+
return self._tab.VectorLen(o)
|
|
128
|
+
return 0
|
|
129
|
+
|
|
130
|
+
# Graph
|
|
131
|
+
def OutputsIsNone(self):
|
|
132
|
+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(10))
|
|
133
|
+
return o == 0
|
|
134
|
+
|
|
135
|
+
# Graph
|
|
136
|
+
def Var1(self, j):
|
|
137
|
+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(12))
|
|
138
|
+
if o != 0:
|
|
139
|
+
x = self._tab.Vector(o)
|
|
140
|
+
x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4
|
|
141
|
+
x = self._tab.Indirect(x)
|
|
142
|
+
from rknncli.schema.rknn.Type2 import Type2
|
|
143
|
+
obj = Type2()
|
|
144
|
+
obj.Init(self._tab.Bytes, x)
|
|
145
|
+
return obj
|
|
146
|
+
return None
|
|
147
|
+
|
|
148
|
+
# Graph
|
|
149
|
+
def Var1Length(self):
|
|
150
|
+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(12))
|
|
151
|
+
if o != 0:
|
|
152
|
+
return self._tab.VectorLen(o)
|
|
153
|
+
return 0
|
|
154
|
+
|
|
155
|
+
# Graph
|
|
156
|
+
def Var1IsNone(self):
|
|
157
|
+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(12))
|
|
158
|
+
return o == 0
|
|
159
|
+
|
|
160
|
+
def GraphStart(builder):
|
|
161
|
+
builder.StartObject(5)
|
|
162
|
+
|
|
163
|
+
def Start(builder):
|
|
164
|
+
GraphStart(builder)
|
|
165
|
+
|
|
166
|
+
def GraphAddTensors(builder, tensors):
|
|
167
|
+
builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(tensors), 0)
|
|
168
|
+
|
|
169
|
+
def AddTensors(builder, tensors):
|
|
170
|
+
GraphAddTensors(builder, tensors)
|
|
171
|
+
|
|
172
|
+
def GraphStartTensorsVector(builder, numElems):
|
|
173
|
+
return builder.StartVector(4, numElems, 4)
|
|
174
|
+
|
|
175
|
+
def StartTensorsVector(builder, numElems):
|
|
176
|
+
return GraphStartTensorsVector(builder, numElems)
|
|
177
|
+
|
|
178
|
+
def GraphAddNodes(builder, nodes):
|
|
179
|
+
builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(nodes), 0)
|
|
180
|
+
|
|
181
|
+
def AddNodes(builder, nodes):
|
|
182
|
+
GraphAddNodes(builder, nodes)
|
|
183
|
+
|
|
184
|
+
def GraphStartNodesVector(builder, numElems):
|
|
185
|
+
return builder.StartVector(4, numElems, 4)
|
|
186
|
+
|
|
187
|
+
def StartNodesVector(builder, numElems):
|
|
188
|
+
return GraphStartNodesVector(builder, numElems)
|
|
189
|
+
|
|
190
|
+
def GraphAddInputs(builder, inputs):
|
|
191
|
+
builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(inputs), 0)
|
|
192
|
+
|
|
193
|
+
def AddInputs(builder, inputs):
|
|
194
|
+
GraphAddInputs(builder, inputs)
|
|
195
|
+
|
|
196
|
+
def GraphStartInputsVector(builder, numElems):
|
|
197
|
+
return builder.StartVector(4, numElems, 4)
|
|
198
|
+
|
|
199
|
+
def StartInputsVector(builder, numElems):
|
|
200
|
+
return GraphStartInputsVector(builder, numElems)
|
|
201
|
+
|
|
202
|
+
def GraphAddOutputs(builder, outputs):
|
|
203
|
+
builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(outputs), 0)
|
|
204
|
+
|
|
205
|
+
def AddOutputs(builder, outputs):
|
|
206
|
+
GraphAddOutputs(builder, outputs)
|
|
207
|
+
|
|
208
|
+
def GraphStartOutputsVector(builder, numElems):
|
|
209
|
+
return builder.StartVector(4, numElems, 4)
|
|
210
|
+
|
|
211
|
+
def StartOutputsVector(builder, numElems):
|
|
212
|
+
return GraphStartOutputsVector(builder, numElems)
|
|
213
|
+
|
|
214
|
+
def GraphAddVar1(builder, var1):
|
|
215
|
+
builder.PrependUOffsetTRelativeSlot(4, flatbuffers.number_types.UOffsetTFlags.py_type(var1), 0)
|
|
216
|
+
|
|
217
|
+
def AddVar1(builder, var1):
|
|
218
|
+
GraphAddVar1(builder, var1)
|
|
219
|
+
|
|
220
|
+
def GraphStartVar1Vector(builder, numElems):
|
|
221
|
+
return builder.StartVector(4, numElems, 4)
|
|
222
|
+
|
|
223
|
+
def StartVar1Vector(builder, numElems):
|
|
224
|
+
return GraphStartVar1Vector(builder, numElems)
|
|
225
|
+
|
|
226
|
+
def GraphEnd(builder):
|
|
227
|
+
return builder.EndObject()
|
|
228
|
+
|
|
229
|
+
def End(builder):
|
|
230
|
+
return GraphEnd(builder)
|
|
231
|
+
|
|
232
|
+
import rknncli.schema.rknn.Node
|
|
233
|
+
import rknncli.schema.rknn.Tensor
|
|
234
|
+
import rknncli.schema.rknn.Type2
|
|
235
|
+
try:
|
|
236
|
+
from typing import List
|
|
237
|
+
except:
|
|
238
|
+
pass
|
|
239
|
+
|
|
240
|
+
class GraphT(object):
|
|
241
|
+
|
|
242
|
+
# GraphT
|
|
243
|
+
def __init__(
|
|
244
|
+
self,
|
|
245
|
+
tensors = None,
|
|
246
|
+
nodes = None,
|
|
247
|
+
inputs = None,
|
|
248
|
+
outputs = None,
|
|
249
|
+
var1 = None,
|
|
250
|
+
):
|
|
251
|
+
self.tensors = tensors # type: Optional[List[rknn.Tensor.TensorT]]
|
|
252
|
+
self.nodes = nodes # type: Optional[List[rknn.Node.NodeT]]
|
|
253
|
+
self.inputs = inputs # type: Optional[List[int]]
|
|
254
|
+
self.outputs = outputs # type: Optional[List[int]]
|
|
255
|
+
self.var1 = var1 # type: Optional[List[rknn.Type2.Type2T]]
|
|
256
|
+
|
|
257
|
+
@classmethod
|
|
258
|
+
def InitFromBuf(cls, buf, pos):
|
|
259
|
+
graph = Graph()
|
|
260
|
+
graph.Init(buf, pos)
|
|
261
|
+
return cls.InitFromObj(graph)
|
|
262
|
+
|
|
263
|
+
@classmethod
|
|
264
|
+
def InitFromPackedBuf(cls, buf, pos=0):
|
|
265
|
+
n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, pos)
|
|
266
|
+
return cls.InitFromBuf(buf, pos+n)
|
|
267
|
+
|
|
268
|
+
@classmethod
|
|
269
|
+
def InitFromObj(cls, graph):
|
|
270
|
+
x = GraphT()
|
|
271
|
+
x._UnPack(graph)
|
|
272
|
+
return x
|
|
273
|
+
|
|
274
|
+
# GraphT
|
|
275
|
+
def _UnPack(self, graph):
|
|
276
|
+
if graph is None:
|
|
277
|
+
return
|
|
278
|
+
if not graph.TensorsIsNone():
|
|
279
|
+
self.tensors = []
|
|
280
|
+
for i in range(graph.TensorsLength()):
|
|
281
|
+
if graph.Tensors(i) is None:
|
|
282
|
+
self.tensors.append(None)
|
|
283
|
+
else:
|
|
284
|
+
tensor_ = rknn.Tensor.TensorT.InitFromObj(graph.Tensors(i))
|
|
285
|
+
self.tensors.append(tensor_)
|
|
286
|
+
if not graph.NodesIsNone():
|
|
287
|
+
self.nodes = []
|
|
288
|
+
for i in range(graph.NodesLength()):
|
|
289
|
+
if graph.Nodes(i) is None:
|
|
290
|
+
self.nodes.append(None)
|
|
291
|
+
else:
|
|
292
|
+
node_ = rknn.Node.NodeT.InitFromObj(graph.Nodes(i))
|
|
293
|
+
self.nodes.append(node_)
|
|
294
|
+
if not graph.InputsIsNone():
|
|
295
|
+
if np is None:
|
|
296
|
+
self.inputs = []
|
|
297
|
+
for i in range(graph.InputsLength()):
|
|
298
|
+
self.inputs.append(graph.Inputs(i))
|
|
299
|
+
else:
|
|
300
|
+
self.inputs = graph.InputsAsNumpy()
|
|
301
|
+
if not graph.OutputsIsNone():
|
|
302
|
+
if np is None:
|
|
303
|
+
self.outputs = []
|
|
304
|
+
for i in range(graph.OutputsLength()):
|
|
305
|
+
self.outputs.append(graph.Outputs(i))
|
|
306
|
+
else:
|
|
307
|
+
self.outputs = graph.OutputsAsNumpy()
|
|
308
|
+
if not graph.Var1IsNone():
|
|
309
|
+
self.var1 = []
|
|
310
|
+
for i in range(graph.Var1Length()):
|
|
311
|
+
if graph.Var1(i) is None:
|
|
312
|
+
self.var1.append(None)
|
|
313
|
+
else:
|
|
314
|
+
type2_ = rknn.Type2.Type2T.InitFromObj(graph.Var1(i))
|
|
315
|
+
self.var1.append(type2_)
|
|
316
|
+
|
|
317
|
+
# GraphT
|
|
318
|
+
def Pack(self, builder):
|
|
319
|
+
if self.tensors is not None:
|
|
320
|
+
tensorslist = []
|
|
321
|
+
for i in range(len(self.tensors)):
|
|
322
|
+
tensorslist.append(self.tensors[i].Pack(builder))
|
|
323
|
+
GraphStartTensorsVector(builder, len(self.tensors))
|
|
324
|
+
for i in reversed(range(len(self.tensors))):
|
|
325
|
+
builder.PrependUOffsetTRelative(tensorslist[i])
|
|
326
|
+
tensors = builder.EndVector()
|
|
327
|
+
if self.nodes is not None:
|
|
328
|
+
nodeslist = []
|
|
329
|
+
for i in range(len(self.nodes)):
|
|
330
|
+
nodeslist.append(self.nodes[i].Pack(builder))
|
|
331
|
+
GraphStartNodesVector(builder, len(self.nodes))
|
|
332
|
+
for i in reversed(range(len(self.nodes))):
|
|
333
|
+
builder.PrependUOffsetTRelative(nodeslist[i])
|
|
334
|
+
nodes = builder.EndVector()
|
|
335
|
+
if self.inputs is not None:
|
|
336
|
+
if np is not None and type(self.inputs) is np.ndarray:
|
|
337
|
+
inputs = builder.CreateNumpyVector(self.inputs)
|
|
338
|
+
else:
|
|
339
|
+
GraphStartInputsVector(builder, len(self.inputs))
|
|
340
|
+
for i in reversed(range(len(self.inputs))):
|
|
341
|
+
builder.PrependInt32(self.inputs[i])
|
|
342
|
+
inputs = builder.EndVector()
|
|
343
|
+
if self.outputs is not None:
|
|
344
|
+
if np is not None and type(self.outputs) is np.ndarray:
|
|
345
|
+
outputs = builder.CreateNumpyVector(self.outputs)
|
|
346
|
+
else:
|
|
347
|
+
GraphStartOutputsVector(builder, len(self.outputs))
|
|
348
|
+
for i in reversed(range(len(self.outputs))):
|
|
349
|
+
builder.PrependInt32(self.outputs[i])
|
|
350
|
+
outputs = builder.EndVector()
|
|
351
|
+
if self.var1 is not None:
|
|
352
|
+
var1list = []
|
|
353
|
+
for i in range(len(self.var1)):
|
|
354
|
+
var1list.append(self.var1[i].Pack(builder))
|
|
355
|
+
GraphStartVar1Vector(builder, len(self.var1))
|
|
356
|
+
for i in reversed(range(len(self.var1))):
|
|
357
|
+
builder.PrependUOffsetTRelative(var1list[i])
|
|
358
|
+
var1 = builder.EndVector()
|
|
359
|
+
GraphStart(builder)
|
|
360
|
+
if self.tensors is not None:
|
|
361
|
+
GraphAddTensors(builder, tensors)
|
|
362
|
+
if self.nodes is not None:
|
|
363
|
+
GraphAddNodes(builder, nodes)
|
|
364
|
+
if self.inputs is not None:
|
|
365
|
+
GraphAddInputs(builder, inputs)
|
|
366
|
+
if self.outputs is not None:
|
|
367
|
+
GraphAddOutputs(builder, outputs)
|
|
368
|
+
if self.var1 is not None:
|
|
369
|
+
GraphAddVar1(builder, var1)
|
|
370
|
+
graph = GraphEnd(builder)
|
|
371
|
+
return graph
|