diff options
author | TatWai Chong <tatwai.chong@arm.com> | 2022-06-10 01:49:13 -0700 |
---|---|---|
committer | TatWai Chong <tatwai.chong@arm.com> | 2022-08-03 22:08:06 +0000 |
commit | 49b1ca63975d4f1865ca312ed9c9b5e0008e13e0 (patch) | |
tree | 27a581a656a3c79d0250f4ca490c96aacbb8dfd6 /python | |
parent | 4417b428061276a88c41825f2e46e2dce387dd0a (diff) | |
download | serialization_lib-49b1ca63975d4f1865ca312ed9c9b5e0008e13e0.tar.gz |
Update TOSA resize to match specification
Attribute stride and shift are removed, and has new scale and border.
For serializing int16 attributes, add a new member vector container
and a building function to do so.
Signed-off-by: TatWai Chong <tatwai.chong@arm.com>
Change-Id: I6d101a37d294dcf0a4d5bbb6c64bfa3c49a98f9e
Diffstat (limited to 'python')
-rw-r--r-- | python/serializer/tosa_serializer.py | 48 | ||||
-rw-r--r-- | python/tosa/ResizeAttribute.py | 120 |
2 files changed, 51 insertions, 117 deletions
diff --git a/python/serializer/tosa_serializer.py b/python/serializer/tosa_serializer.py index ec1c12d..27189ec 100644 --- a/python/serializer/tosa_serializer.py +++ b/python/serializer/tosa_serializer.py @@ -90,6 +90,7 @@ class TosaSerializerUnion: self.bools = [] self.floats = [] self.strings = [] + self.int16vecs = [] self.intvecs = [] self.fpvecs = [] @@ -106,6 +107,9 @@ class TosaSerializerUnion: for fcn, val in self.intvecs: intVecList.append((fcn, TosaSerializer.serializeInt32Vec(builder, val))) + for fcn, val in self.int16vecs: + intVecList.append((fcn, TosaSerializer.serializeInt16Vec(builder, val))) + for fcn, val in self.fpvecs: fpVecList.append((fcn, TosaSerializer.serializeFpVec(builder, val))) @@ -220,20 +224,15 @@ class TosaSerializerAttribute(TosaSerializerUnion): self.intvecs.append((a.AddMultiples, multiples)) - def ResizeAttribute( - self, output_size, stride, offset, shift, stride_fp, offset_fp, mode - ): + def ResizeAttribute(self, scale, offset, border, mode): from tosa import ResizeAttribute as a, Attribute self.utype = Attribute.Attribute().ResizeAttribute self.optFcns = (a.Start, a.End) - self.intvecs.append((a.AddOutputSize, output_size)) - self.intvecs.append((a.AddStride, stride)) - self.intvecs.append((a.AddOffset, offset)) - self.ints.append((a.AddShift, shift)) - self.fpvecs.append((a.AddStrideFp, stride_fp)) - self.fpvecs.append((a.AddOffsetFp, offset_fp)) + self.int16vecs.append((a.AddScale, scale)) + self.int16vecs.append((a.AddOffset, offset)) + self.int16vecs.append((a.AddBorder, border)) self.ints.append((a.AddMode, mode)) def ClampAttribute(self, minint, maxint, minfp, maxfp): @@ -757,6 +756,16 @@ class TosaSerializer: return builder.EndVector(len(vec)) @staticmethod + def serializeInt16Vec(builder, vec): + builder.StartVector(2, len(vec), 4) + for v in vec[::-1]: + builder.PrependInt16(v) + try: + return builder.EndVector() + except TypeError: + return builder.EndVector(len(vec)) + + @staticmethod def serializeInt32Vec(builder, vec): builder.StartVector(4, len(vec), 4) for v in vec[::-1]: @@ -963,26 +972,17 @@ class TosaSerializer: if not hasattr(ResizeAttribute, "Start"): ResizeAttribute.Start = ResizeAttribute.ResizeAttributeStart - ResizeAttribute.AddOutputSize = ResizeAttribute.ResizeAttributeAddOutputSize - ResizeAttribute.StartOutputSizeVector = ( - ResizeAttribute.ResizeAttributeStartOutputSizeVector - ) - ResizeAttribute.AddStride = ResizeAttribute.ResizeAttributeAddStride - ResizeAttribute.StartStrideVector = ( - ResizeAttribute.ResizeAttributeStartStrideVector + ResizeAttribute.AddScale = ResizeAttribute.ResizeAttributeAddScale + ResizeAttribute.StartScaleVector = ( + ResizeAttribute.ResizeAttributeStartScaleVector ) ResizeAttribute.AddOffset = ResizeAttribute.ResizeAttributeAddOffset ResizeAttribute.StartOffsetVector = ( ResizeAttribute.ResizeAttributeStartOffsetVector ) - ResizeAttribute.AddShift = ResizeAttribute.ResizeAttributeAddShift - ResizeAttribute.AddStrideFp = ResizeAttribute.ResizeAttributeAddStrideFp - ResizeAttribute.StartStrideFpVector = ( - ResizeAttribute.ResizeAttributeStartStrideFpVector - ) - ResizeAttribute.AddOffsetFp = ResizeAttribute.ResizeAttributeAddOffsetFp - ResizeAttribute.StartOffsetFpVector = ( - ResizeAttribute.ResizeAttributeStartOffsetFpVector + ResizeAttribute.AddBorder = ResizeAttribute.ResizeAttributeAddBorder + ResizeAttribute.StartBorderVector = ( + ResizeAttribute.ResizeAttributeStartBorderVector ) ResizeAttribute.AddMode = ResizeAttribute.ResizeAttributeAddMode ResizeAttribute.End = ResizeAttribute.ResizeAttributeEnd diff --git a/python/tosa/ResizeAttribute.py b/python/tosa/ResizeAttribute.py index 1ed2dc0..ae03adc 100644 --- a/python/tosa/ResizeAttribute.py +++ b/python/tosa/ResizeAttribute.py @@ -25,165 +25,99 @@ class ResizeAttribute(object): self._tab = flatbuffers.table.Table(buf, pos) # ResizeAttribute - def OutputSize(self, j): + def Scale(self, j): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4)) if o != 0: a = self._tab.Vector(o) - return self._tab.Get(flatbuffers.number_types.Int32Flags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 4)) + return self._tab.Get(flatbuffers.number_types.Int16Flags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 2)) return 0 # ResizeAttribute - def OutputSizeAsNumpy(self): + def ScaleAsNumpy(self): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4)) if o != 0: - return self._tab.GetVectorAsNumpy(flatbuffers.number_types.Int32Flags, o) + return self._tab.GetVectorAsNumpy(flatbuffers.number_types.Int16Flags, o) return 0 # ResizeAttribute - def OutputSizeLength(self): + def ScaleLength(self): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4)) if o != 0: return self._tab.VectorLen(o) return 0 # ResizeAttribute - def OutputSizeIsNone(self): + def ScaleIsNone(self): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4)) return o == 0 # ResizeAttribute - def Stride(self, j): + def Offset(self, j): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6)) if o != 0: a = self._tab.Vector(o) - return self._tab.Get(flatbuffers.number_types.Int32Flags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 4)) + return self._tab.Get(flatbuffers.number_types.Int16Flags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 2)) return 0 # ResizeAttribute - def StrideAsNumpy(self): + def OffsetAsNumpy(self): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6)) if o != 0: - return self._tab.GetVectorAsNumpy(flatbuffers.number_types.Int32Flags, o) + return self._tab.GetVectorAsNumpy(flatbuffers.number_types.Int16Flags, o) return 0 # ResizeAttribute - def StrideLength(self): + def OffsetLength(self): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6)) if o != 0: return self._tab.VectorLen(o) return 0 # ResizeAttribute - def StrideIsNone(self): + def OffsetIsNone(self): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6)) return o == 0 # ResizeAttribute - def Offset(self, j): + def Border(self, j): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8)) if o != 0: a = self._tab.Vector(o) - return self._tab.Get(flatbuffers.number_types.Int32Flags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 4)) + return self._tab.Get(flatbuffers.number_types.Int16Flags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 2)) return 0 # ResizeAttribute - def OffsetAsNumpy(self): + def BorderAsNumpy(self): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8)) if o != 0: - return self._tab.GetVectorAsNumpy(flatbuffers.number_types.Int32Flags, o) + return self._tab.GetVectorAsNumpy(flatbuffers.number_types.Int16Flags, o) return 0 # ResizeAttribute - def OffsetLength(self): + def BorderLength(self): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8)) if o != 0: return self._tab.VectorLen(o) return 0 # ResizeAttribute - def OffsetIsNone(self): + def BorderIsNone(self): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8)) return o == 0 # ResizeAttribute - def Shift(self): - o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(10)) - if o != 0: - return self._tab.Get(flatbuffers.number_types.Int32Flags, o + self._tab.Pos) - return 0 - - # ResizeAttribute - def StrideFp(self, j): - o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(12)) - if o != 0: - a = self._tab.Vector(o) - return self._tab.Get(flatbuffers.number_types.Float32Flags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 4)) - return 0 - - # ResizeAttribute - def StrideFpAsNumpy(self): - o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(12)) - if o != 0: - return self._tab.GetVectorAsNumpy(flatbuffers.number_types.Float32Flags, o) - return 0 - - # ResizeAttribute - def StrideFpLength(self): - o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(12)) - if o != 0: - return self._tab.VectorLen(o) - return 0 - - # ResizeAttribute - def StrideFpIsNone(self): - o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(12)) - return o == 0 - - # ResizeAttribute - def OffsetFp(self, j): - o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(14)) - if o != 0: - a = self._tab.Vector(o) - return self._tab.Get(flatbuffers.number_types.Float32Flags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 4)) - return 0 - - # ResizeAttribute - def OffsetFpAsNumpy(self): - o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(14)) - if o != 0: - return self._tab.GetVectorAsNumpy(flatbuffers.number_types.Float32Flags, o) - return 0 - - # ResizeAttribute - def OffsetFpLength(self): - o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(14)) - if o != 0: - return self._tab.VectorLen(o) - return 0 - - # ResizeAttribute - def OffsetFpIsNone(self): - o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(14)) - return o == 0 - - # ResizeAttribute def Mode(self): - o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(16)) + o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(10)) if o != 0: return self._tab.Get(flatbuffers.number_types.Uint32Flags, o + self._tab.Pos) return 0 -def ResizeAttributeStart(builder): builder.StartObject(7) -def ResizeAttributeAddOutputSize(builder, outputSize): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(outputSize), 0) -def ResizeAttributeStartOutputSizeVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def ResizeAttributeAddStride(builder, stride): builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(stride), 0) -def ResizeAttributeStartStrideVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def ResizeAttributeAddOffset(builder, offset): builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(offset), 0) -def ResizeAttributeStartOffsetVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def ResizeAttributeAddShift(builder, shift): builder.PrependInt32Slot(3, shift, 0) -def ResizeAttributeAddStrideFp(builder, strideFp): builder.PrependUOffsetTRelativeSlot(4, flatbuffers.number_types.UOffsetTFlags.py_type(strideFp), 0) -def ResizeAttributeStartStrideFpVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def ResizeAttributeAddOffsetFp(builder, offsetFp): builder.PrependUOffsetTRelativeSlot(5, flatbuffers.number_types.UOffsetTFlags.py_type(offsetFp), 0) -def ResizeAttributeStartOffsetFpVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def ResizeAttributeAddMode(builder, mode): builder.PrependUint32Slot(6, mode, 0) +def ResizeAttributeStart(builder): builder.StartObject(4) +def ResizeAttributeAddScale(builder, scale): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(scale), 0) +def ResizeAttributeStartScaleVector(builder, numElems): return builder.StartVector(2, numElems, 2) +def ResizeAttributeAddOffset(builder, offset): builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(offset), 0) +def ResizeAttributeStartOffsetVector(builder, numElems): return builder.StartVector(2, numElems, 2) +def ResizeAttributeAddBorder(builder, border): builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(border), 0) +def ResizeAttributeStartBorderVector(builder, numElems): return builder.StartVector(2, numElems, 2) +def ResizeAttributeAddMode(builder, mode): builder.PrependUint32Slot(3, mode, 0) def ResizeAttributeEnd(builder): return builder.EndObject() |