diff options
author | Tai Ly <tai.ly@arm.com> | 2024-03-08 17:03:25 +0000 |
---|---|---|
committer | Eric Kunze <eric.kunze@arm.com> | 2024-03-11 18:06:51 +0000 |
commit | 0b6d7c271af1e6593e6a2cf14b32acea765f4b64 (patch) | |
tree | 6209a2d95a17a736658f2396195833b6d19c68fb /python/serializer/tosa_serializer.py | |
parent | 758e73e117c5cef17f8f0b1c543efc1df953b2fa (diff) | |
download | serialization_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.py | 38 |
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)) |