From 38d214cfa4491f1956f28d7eff428a8ed07d824c Mon Sep 17 00:00:00 2001 From: Kevin Cheng Date: Fri, 15 Oct 2021 15:49:19 -0700 Subject: Changes for 0.23.0 release - Remove RELUN op - Add pad_const to PAD op - Make padding as an attribute of PAD op - Make perm as an attribute of TRANSPOSE op - Make table as attribute in Table op - Fix typo in operator.def Signed-off-by: Kevin Cheng Change-Id: Ifcaa4ad686578cf814345ede8e7f37f0a04fd8ea --- python/tosa/Attribute.py | 4 +- python/tosa/Op.py | 2 +- python/tosa/PadAttribute.py | 88 +++++++++++++++++++++++++++++++++++++++ python/tosa/ReluNAttribute.py | 59 -------------------------- python/tosa/TableAttribute.py | 72 ++++++++++++++++++++++++++++++++ python/tosa/TransposeAttribute.py | 72 ++++++++++++++++++++++++++++++++ python/tosa_serializer.py | 36 +++++++++------- 7 files changed, 258 insertions(+), 75 deletions(-) create mode 100644 python/tosa/PadAttribute.py delete mode 100644 python/tosa/ReluNAttribute.py create mode 100644 python/tosa/TableAttribute.py create mode 100644 python/tosa/TransposeAttribute.py (limited to 'python') diff --git a/python/tosa/Attribute.py b/python/tosa/Attribute.py index 334b4ae..478796f 100644 --- a/python/tosa/Attribute.py +++ b/python/tosa/Attribute.py @@ -22,7 +22,7 @@ class Attribute(object): PoolAttribute = 1 ConvAttribute = 2 TransposeConvAttribute = 3 - ReluNAttribute = 4 + PadAttribute = 4 AxisAttribute = 5 ReshapeAttribute = 6 SliceAttribute = 7 @@ -34,4 +34,6 @@ class Attribute(object): ArithmeticRightShiftAttribute = 13 CondIfAttribute = 14 WhileLoopAttribute = 15 + TransposeAttribute = 16 + TableAttribute = 17 diff --git a/python/tosa/Op.py b/python/tosa/Op.py index 0c29224..a3de87d 100644 --- a/python/tosa/Op.py +++ b/python/tosa/Op.py @@ -29,7 +29,7 @@ class Op(object): MAX_POOL2D = 8 TRANSPOSE_CONV2D = 9 CLAMP = 10 - RELUN = 11 + RESERVED = 11 SIGMOID = 12 TANH = 13 ADD = 14 diff --git a/python/tosa/PadAttribute.py b/python/tosa/PadAttribute.py new file mode 100644 index 0000000..64dc4c7 --- /dev/null +++ b/python/tosa/PadAttribute.py @@ -0,0 +1,88 @@ +# automatically generated by the FlatBuffers compiler, do not modify + +# Copyright (c) 2020-2021, ARM Limited. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# namespace: tosa + +import flatbuffers +from flatbuffers.compat import import_numpy +np = import_numpy() + +class PadAttribute(object): + __slots__ = ['_tab'] + + @classmethod + def GetRootAsPadAttribute(cls, buf, offset): + n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, offset) + x = PadAttribute() + x.Init(buf, n + offset) + return x + + @classmethod + def PadAttributeBufferHasIdentifier(cls, buf, offset, size_prefixed=False): + return flatbuffers.util.BufferHasIdentifier(buf, offset, b"\x54\x4F\x53\x41", size_prefixed=size_prefixed) + + # PadAttribute + def Init(self, buf, pos): + self._tab = flatbuffers.table.Table(buf, pos) + + # PadAttribute + def Padding(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 0 + + # PadAttribute + def PaddingAsNumpy(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 0 + + # PadAttribute + def PaddingLength(self): + o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4)) + if o != 0: + return self._tab.VectorLen(o) + return 0 + + # PadAttribute + def PaddingIsNone(self): + o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4)) + return o == 0 + + # PadAttribute + def PadConstInt(self): + o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6)) + if o != 0: + return self._tab.Get(flatbuffers.number_types.Int32Flags, o + self._tab.Pos) + return 0 + + # PadAttribute + def PadConstFp(self): + o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8)) + if o != 0: + return self._tab.Get(flatbuffers.number_types.Float32Flags, o + self._tab.Pos) + return 0.0 + +def PadAttributeStart(builder): builder.StartObject(3) +def PadAttributeAddPadding(builder, padding): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(padding), 0) +def PadAttributeStartPaddingVector(builder, numElems): return builder.StartVector(4, numElems, 4) +def PadAttributeAddPadConstInt(builder, padConstInt): builder.PrependInt32Slot(1, padConstInt, 0) +def PadAttributeAddPadConstFp(builder, padConstFp): builder.PrependFloat32Slot(2, padConstFp, 0.0) +def PadAttributeEnd(builder): return builder.EndObject() diff --git a/python/tosa/ReluNAttribute.py b/python/tosa/ReluNAttribute.py deleted file mode 100644 index b96d701..0000000 --- a/python/tosa/ReluNAttribute.py +++ /dev/null @@ -1,59 +0,0 @@ -# automatically generated by the FlatBuffers compiler, do not modify - -# Copyright (c) 2020-2021, ARM Limited. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -# namespace: tosa - -import flatbuffers -from flatbuffers.compat import import_numpy -np = import_numpy() - -class ReluNAttribute(object): - __slots__ = ['_tab'] - - @classmethod - def GetRootAsReluNAttribute(cls, buf, offset): - n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, offset) - x = ReluNAttribute() - x.Init(buf, n + offset) - return x - - @classmethod - def ReluNAttributeBufferHasIdentifier(cls, buf, offset, size_prefixed=False): - return flatbuffers.util.BufferHasIdentifier(buf, offset, b"\x54\x4F\x53\x41", size_prefixed=size_prefixed) - - # ReluNAttribute - def Init(self, buf, pos): - self._tab = flatbuffers.table.Table(buf, pos) - - # ReluNAttribute - def MaxInt(self): - o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4)) - if o != 0: - return self._tab.Get(flatbuffers.number_types.Int32Flags, o + self._tab.Pos) - return 0 - - # ReluNAttribute - def MaxFp(self): - o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6)) - if o != 0: - return self._tab.Get(flatbuffers.number_types.Float32Flags, o + self._tab.Pos) - return 0.0 - -def ReluNAttributeStart(builder): builder.StartObject(2) -def ReluNAttributeAddMaxInt(builder, maxInt): builder.PrependInt32Slot(0, maxInt, 0) -def ReluNAttributeAddMaxFp(builder, maxFp): builder.PrependFloat32Slot(1, maxFp, 0.0) -def ReluNAttributeEnd(builder): return builder.EndObject() diff --git a/python/tosa/TableAttribute.py b/python/tosa/TableAttribute.py new file mode 100644 index 0000000..8cdbb65 --- /dev/null +++ b/python/tosa/TableAttribute.py @@ -0,0 +1,72 @@ +# automatically generated by the FlatBuffers compiler, do not modify + +# Copyright (c) 2020-2021, ARM Limited. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# namespace: tosa + +import flatbuffers +from flatbuffers.compat import import_numpy +np = import_numpy() + +class TableAttribute(object): + __slots__ = ['_tab'] + + @classmethod + def GetRootAsTableAttribute(cls, buf, offset): + n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, offset) + x = TableAttribute() + x.Init(buf, n + offset) + return x + + @classmethod + def TableAttributeBufferHasIdentifier(cls, buf, offset, size_prefixed=False): + return flatbuffers.util.BufferHasIdentifier(buf, offset, b"\x54\x4F\x53\x41", size_prefixed=size_prefixed) + + # TableAttribute + def Init(self, buf, pos): + self._tab = flatbuffers.table.Table(buf, pos) + + # TableAttribute + def Table(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 0 + + # TableAttribute + def TableAsNumpy(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 0 + + # TableAttribute + def TableLength(self): + o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4)) + if o != 0: + return self._tab.VectorLen(o) + return 0 + + # TableAttribute + def TableIsNone(self): + o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4)) + return o == 0 + +def TableAttributeStart(builder): builder.StartObject(1) +def TableAttributeAddTable(builder, table): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(table), 0) +def TableAttributeStartTableVector(builder, numElems): return builder.StartVector(4, numElems, 4) +def TableAttributeEnd(builder): return builder.EndObject() diff --git a/python/tosa/TransposeAttribute.py b/python/tosa/TransposeAttribute.py new file mode 100644 index 0000000..399a308 --- /dev/null +++ b/python/tosa/TransposeAttribute.py @@ -0,0 +1,72 @@ +# automatically generated by the FlatBuffers compiler, do not modify + +# Copyright (c) 2020-2021, ARM Limited. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# namespace: tosa + +import flatbuffers +from flatbuffers.compat import import_numpy +np = import_numpy() + +class TransposeAttribute(object): + __slots__ = ['_tab'] + + @classmethod + def GetRootAsTransposeAttribute(cls, buf, offset): + n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, offset) + x = TransposeAttribute() + x.Init(buf, n + offset) + return x + + @classmethod + def TransposeAttributeBufferHasIdentifier(cls, buf, offset, size_prefixed=False): + return flatbuffers.util.BufferHasIdentifier(buf, offset, b"\x54\x4F\x53\x41", size_prefixed=size_prefixed) + + # TransposeAttribute + def Init(self, buf, pos): + self._tab = flatbuffers.table.Table(buf, pos) + + # TransposeAttribute + def Perm(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 0 + + # TransposeAttribute + def PermAsNumpy(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 0 + + # TransposeAttribute + def PermLength(self): + o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4)) + if o != 0: + return self._tab.VectorLen(o) + return 0 + + # TransposeAttribute + def PermIsNone(self): + o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4)) + return o == 0 + +def TransposeAttributeStart(builder): builder.StartObject(1) +def TransposeAttributeAddPerm(builder, perm): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(perm), 0) +def TransposeAttributeStartPermVector(builder, numElems): return builder.StartVector(4, numElems, 4) +def TransposeAttributeEnd(builder): return builder.EndObject() diff --git a/python/tosa_serializer.py b/python/tosa_serializer.py index d85494d..3d0019e 100644 --- a/python/tosa_serializer.py +++ b/python/tosa_serializer.py @@ -170,14 +170,15 @@ class TosaSerializerAttribute(TosaSerializerUnion): self.intvecs.append((a.TransposeConvAttributeAddDilation, dilation)) self.intvecs.append((a.TransposeConvAttributeAddOutputShape, output_shape)) - def ReluNAttribute(self, maxint, maxfp): - from tosa import ReluNAttribute as a, Attribute + def PadAttribute(self, padding, pad_const_int, pad_const_fp): + from tosa import PadAttribute as a, Attribute - self.utype = Attribute.Attribute().ReluNAttribute - self.optFcns = (a.ReluNAttributeStart, a.ReluNAttributeEnd) + self.utype = Attribute.Attribute().PadAttribute + self.optFcns = (a.PadAttributeStart, a.PadAttributeEnd) - self.ints.append((a.ReluNAttributeAddMaxInt, maxint)) - self.ints.append((a.ReluNAttributeAddMaxFp, maxfp)) + self.intvecs.append((a.PadAttributeAddPadding, padding)) + self.ints.append((a.PadAttributeAddPadConstInt, pad_const_int)) + self.floats.append((a.PadAttributeAddPadConstFp, pad_const_fp)) def AxisAttribute(self, axis): from tosa import AxisAttribute as a, Attribute @@ -275,14 +276,6 @@ class TosaSerializerAttribute(TosaSerializerUnion): self.bools.append((a.ArithmeticRightShiftAttributeAddRound, round)) - def CustomAttribute(self, identifier): - from tosa import CustomAttribute as a, Attribute - - self.utype = Attribute.Attribute().CustomAttribute - self.optFcns = (a.CustomAttributeStart, a.CustomAttributeEnd) - - self.strings.append((a.CustomAttributeAddIdentifier, identifier)) - def CondIfAttribute(self, then_branch, else_branch): from tosa import CondIfAttribute as a, Attribute @@ -301,6 +294,21 @@ class TosaSerializerAttribute(TosaSerializerUnion): self.strings.append((a.WhileLoopAttributeAddCondBranch, cond_branch)) self.strings.append((a.WhileLoopAttributeAddBodyBranch, body_branch)) + def TransposeAttribute(self, perm): + from tosa import TransposeAttribute as a, Attribute + + self.utype = Attribute.Attribute().TransposeAttribute + self.optFcns = (a.TransposeAttributeStart, a.TransposeAttributeEnd) + + self.intvecs.append((a.TransposeAttributeAddPerm, perm)) + + def TableAttribute(self, table): + from tosa import TableAttribute as a, Attribute + + self.utype = Attribute.Attribute().TableAttribute + self.optFcns = (a.TableAttributeStart, a.TableAttributeEnd) + + self.intvecs.append((a.TableAttributeAddTable, table)) class TosaSerializerQuantInfo(TosaSerializerUnion): """This class handles encapsulating all of the enumerated types for quantinfo types""" -- cgit v1.2.1