aboutsummaryrefslogtreecommitdiff
path: root/python/serializer/tosa_serializer.py
diff options
context:
space:
mode:
authorTai Ly <tai.ly@arm.com>2024-03-08 17:03:25 +0000
committerEric Kunze <eric.kunze@arm.com>2024-03-11 18:06:51 +0000
commit0b6d7c271af1e6593e6a2cf14b32acea765f4b64 (patch)
tree6209a2d95a17a736658f2396195833b6d19c68fb /python/serializer/tosa_serializer.py
parent758e73e117c5cef17f8f0b1c543efc1df953b2fa (diff)
downloadserialization_lib-0b6d7c271af1e6593e6a2cf14b32acea765f4b64.tar.gz
[serialization_lib] Fix Clamp and Pad Attributes
This patch implements following changes to attribute fields: - PadAttribute: delete padding field, replace pad_const_int and pad_const_fp fields by pad_const, a field of ubyte array - ClampAttribute: replace min_int, max_int, min_fp and max_fp fields by min_val and max_val, fields of ubyte arrays - RescaleAttribute: delete multiplier and shift fields Signed-off-by: Tai Ly <tai.ly@arm.com> Change-Id: I5b075d29677cffca9ff2292708141d48410e7e72
Diffstat (limited to 'python/serializer/tosa_serializer.py')
-rw-r--r--python/serializer/tosa_serializer.py38
1 files changed, 12 insertions, 26 deletions
diff --git a/python/serializer/tosa_serializer.py b/python/serializer/tosa_serializer.py
index 546de7d..2c7996a 100644
--- a/python/serializer/tosa_serializer.py
+++ b/python/serializer/tosa_serializer.py
@@ -13,7 +13,6 @@
# limitations under the License.
import os
-import struct
import serializer.tosa_serializer as ts
import json
import flatbuffers
@@ -201,22 +200,18 @@ class TosaSerializerAttribute(TosaSerializerUnion):
self.ints.append((a.AddWeightZp, weight_zp))
self.bools.append((a.AddLocalBound, local_bound))
- def PadAttribute(self, serializer_builder, padding, pad_const_int, pad_const_fp):
+ def PadAttribute(self, serializer_builder, pad_const_val_as_bytes):
from tosa import PadAttribute as a, Attribute
self.utype = Attribute.Attribute().PadAttribute
self.optFcns = (a.Start, a.End)
- self.intvecs.append((a.AddPadding, padding))
- self.ints.append((a.AddPadConstInt, pad_const_int))
-
- # pad_const_fp attribute serialized as uint8 vector
- pad_const_float_as_bytes = struct.pack("<f", pad_const_fp)
- serialized_pad_const_fp = ts.TosaSerializer.serializeUint8Vec(
- serializer_builder, pad_const_float_as_bytes
+ # serialize pad_const_val_as_bytes as uint8 vector
+ serialized_pad_const_val = ts.TosaSerializer.serializeUint8Vec(
+ serializer_builder, pad_const_val_as_bytes
)
- self.floats.append((a.AddPadConstFp, serialized_pad_const_fp))
+ self.floats.append((a.AddPadConst, serialized_pad_const_val))
def AxisAttribute(self, axis):
from tosa import AxisAttribute as a, Attribute
@@ -237,34 +232,27 @@ class TosaSerializerAttribute(TosaSerializerUnion):
self.int16vecs.append((a.AddBorder, border))
self.ints.append((a.AddMode, mode))
- def ClampAttribute(self, serializer_builder, minint, maxint, minfp, maxfp):
+ def ClampAttribute(self, serializer_builder, min_val_as_bytes, max_val_as_bytes):
from tosa import ClampAttribute as a, Attribute
self.utype = Attribute.Attribute().ClampAttribute
self.optFcns = (a.Start, a.End)
- self.ints.append((a.AddMinInt, minint))
- self.ints.append((a.AddMaxInt, maxint))
-
# min/max float attributes serialized as uint8 vectors
- minfp_bytes = struct.pack("<f", minfp)
- maxfp_bytes = struct.pack("<f", maxfp)
- serialized_minfp_bytes = ts.TosaSerializer.serializeUint8Vec(
- serializer_builder, minfp_bytes
+ serialized_min_val = ts.TosaSerializer.serializeUint8Vec(
+ serializer_builder, min_val_as_bytes
)
- serialized_maxfp_bytes = ts.TosaSerializer.serializeUint8Vec(
- serializer_builder, maxfp_bytes
+ serialized_max_val = ts.TosaSerializer.serializeUint8Vec(
+ serializer_builder, max_val_as_bytes
)
- self.floats.append((a.AddMinFp, serialized_minfp_bytes))
- self.floats.append((a.AddMaxFp, serialized_maxfp_bytes))
+ self.floats.append((a.AddMinVal, serialized_min_val))
+ self.floats.append((a.AddMaxVal, serialized_max_val))
def RescaleAttribute(
self,
input_zp,
output_zp,
- multiplier,
- shift,
scale32,
double_round,
per_channel,
@@ -278,8 +266,6 @@ class TosaSerializerAttribute(TosaSerializerUnion):
self.ints.append((a.AddInputZp, input_zp))
self.ints.append((a.AddOutputZp, output_zp))
- self.intvecs.append((a.AddMultiplier, multiplier))
- self.intvecs.append((a.AddShift, shift))
self.bools.append((a.AddScale32, scale32))
self.bools.append((a.AddDoubleRound, double_round))
self.bools.append((a.AddPerChannel, per_channel))