Skip to content

Commit 5fb21e0

Browse files
ratgrtensorflower-gardener
authored andcommitted
Fix an issue where multiple instances of DefaultNBitQuantizeRegistry could interfere with each other's configuration.
PiperOrigin-RevId: 931228650
1 parent 97811c3 commit 5fb21e0

3 files changed

Lines changed: 16 additions & 7 deletions

File tree

tensorflow_model_optimization/python/core/quantization/keras/experimental/default_n_bit/BUILD

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,13 @@ py_library(
6464
],
6565
# strict_deps = True,
6666
deps = [
67+
":default_n_bit_quantize_configs",
68+
":default_n_bit_quantizers",
6769
# tensorflow dep1,
6870
"//tensorflow_model_optimization/python/core/keras:compat",
6971
"//tensorflow_model_optimization/python/core/quantization/keras:quantize_config",
7072
"//tensorflow_model_optimization/python/core/quantization/keras:quantize_registry",
7173
"//tensorflow_model_optimization/python/core/quantization/keras:quantizers",
72-
"//tensorflow_model_optimization/python/core/quantization/keras/experimental/default_n_bit:default_n_bit_quantize_configs",
73-
"//tensorflow_model_optimization/python/core/quantization/keras/experimental/default_n_bit:default_n_bit_quantizers",
7474
],
7575
)
7676

@@ -88,6 +88,7 @@ py_test(
8888
# tensorflow dep1,
8989
"//tensorflow_model_optimization/python/core/keras:compat",
9090
"//tensorflow_model_optimization/python/core/quantization/keras:quantizers",
91+
"//tensorflow_model_optimization/python/core/quantization/keras:utils",
9192
],
9293
)
9394

tensorflow_model_optimization/python/core/quantization/keras/experimental/default_n_bit/default_n_bit_quantize_registry.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -185,9 +185,15 @@ def __init__(self, disable_per_axis=False,
185185
self._num_bits_activation = num_bits_activation
186186
self._layer_quantize_map = {}
187187
for quantize_info in self._LAYER_QUANTIZE_INFO:
188-
quantize_info.num_bits_weight = num_bits_weight
189-
quantize_info.num_bits_activation = num_bits_activation
190-
self._layer_quantize_map[quantize_info.layer_type] = quantize_info
188+
new_quantize_info = _QuantizeInfo(
189+
layer_type=quantize_info.layer_type,
190+
weight_attrs=quantize_info.weight_attrs,
191+
activation_attrs=quantize_info.activation_attrs,
192+
quantize_output=quantize_info.quantize_output,
193+
num_bits_weight=num_bits_weight,
194+
num_bits_activation=num_bits_activation,
195+
)
196+
self._layer_quantize_map[new_quantize_info.layer_type] = new_quantize_info
191197

192198
# Hack for `Activation` layer. That is the only layer with a separate
193199
# QuantizeConfig.

tensorflow_model_optimization/python/core/quantization/keras/experimental/default_n_bit/default_n_bit_quantize_registry_test.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,8 @@ def testSerialization(self):
374374
quantize_config_from_config = deserialize_keras_object(
375375
serialized_quantize_config,
376376
module_objects=globals(),
377-
custom_objects=n_bit_registry._types_dict())
377+
custom_objects=n_bit_registry._types_dict(),
378+
)
378379

379380
self.assertEqual(quantize_config, quantize_config_from_config)
380381

@@ -493,7 +494,8 @@ def testSerialization(self):
493494
quantize_config_from_config = deserialize_keras_object(
494495
serialized_quantize_config,
495496
module_objects=globals(),
496-
custom_objects=n_bit_registry._types_dict())
497+
custom_objects=n_bit_registry._types_dict(),
498+
)
497499

498500
self.assertEqual(self.quantize_config, quantize_config_from_config)
499501

0 commit comments

Comments
 (0)