Skip to content

Commit 664cbb8

Browse files
authored
fix mse strategy for mxnet (#1110)
1 parent a229b36 commit 664cbb8

File tree

3 files changed

+12
-13
lines changed

3 files changed

+12
-13
lines changed

neural_compressor/adaptor/mxnet.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,8 @@ def b_filter():
320320
return collector.tensors_dicts
321321

322322
def inspect_tensor(self, nc_model, data_x, op_list=[], iteration_list=[],
323-
inspect_type='activation', save_to_disk=False):
323+
inspect_type='activation', save_to_disk=False,
324+
save_path = None, quantization_cfg = None):
324325
"""The function is used by tune strategy class for dumping tensor info.
325326
326327
Args:
@@ -352,7 +353,7 @@ def inspect_tensor(self, nc_model, data_x, op_list=[], iteration_list=[],
352353
tensor_dict[key][tensor_name] = tensor_dict[key][tensor_name].asnumpy()
353354

354355
# transform to format expected by neural_compressor (assume only 1 tensor for now)
355-
node, op = key
356+
node = key
356357
assert len(tensors) == 1, 'Multiple tensors from a single node are not supported'
357358
tensor = list(tensor_dict[key].values())[0]
358359
tensor_dict[key] = {node: tensor}

neural_compressor/adaptor/mxnet_utils/util.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -758,11 +758,11 @@ class TensorCollector(CollectorBase):
758758

759759
def __init__(self, include_nodes, qtensor_to_tensor, tensor_to_node):
760760
self.tensors_dicts = []
761-
self.include_nodes = dict(include_nodes)
761+
self.include_nodes = include_nodes
762762
self.qtensor_to_tensor = qtensor_to_tensor
763763
self.tensor_to_node = tensor_to_node
764764

765-
rest = set(self.include_nodes.keys()) - set(self.tensor_to_node.values())
765+
rest = set(self.include_nodes) - set(self.tensor_to_node.values())
766766
assert len(rest) == 0, 'Unexpected tensors set to be collected: {}'.format(rest)
767767

768768
def collect_gluon(self, name, _, arr):
@@ -779,9 +779,7 @@ def collect_gluon(self, name, _, arr):
779779

780780
node = self.tensor_to_node[name]
781781
if node in self.include_nodes:
782-
op = self.include_nodes[node]
783-
key = (node, op)
784-
self.tensors_dicts[-1].setdefault(key, {})[name] = (is_quantized, arr.copy())
782+
self.tensors_dicts[-1].setdefault(node, {})[name] = (is_quantized, arr.copy())
785783

786784
def pre_batch(self, m, b):
787785
self.tensors_dicts.append({})

test/adaptor/mxnet_adaptor/test_adaptor_mxnet.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -159,23 +159,23 @@ def test_mlp_model_quantization(self):
159159
fc_node_name2 = fc_op_name + '_1'
160160

161161
insp = inspect_tensor(quantizer.model, quantizer.calib_dataloader,
162-
op_list=[(fc_node_name1, fc_op_name),
163-
(fc_node_name2, fc_op_name)], iteration_list=[1, 3])
162+
op_list=[fc_node_name1,
163+
fc_node_name2 ], iteration_list=[1, 3])
164164
qinsp = inspect_tensor(qmodel, quantizer.calib_dataloader,
165-
op_list=[(fc_node_name1, fc_op_name),
166-
(fc_node_name2, fc_op_name)], iteration_list=[1, 3])
165+
op_list=[fc_node_name1,
166+
fc_node_name2], iteration_list=[1, 3])
167167

168168
self.assertNotEqual(len(insp['activation']), 0)
169169
self.assertEqual(len(insp['activation']), len(qinsp['activation']))
170170

171171
for tensors, qtensors in zip(insp['activation'], qinsp['activation']):
172172
for k in (set(tensors.keys()) & set(qtensors.keys())):
173-
tensor, qtensor = tensors[k][k[0]], qtensors[k][k[0]]
173+
tensor, qtensor = tensors[k][k], qtensors[k][k]
174174
self.assertEqual(tensor.shape, qtensor.shape)
175175

176176
#test inspect with an empty iteration_list
177177
inspect_tensor(qmodel, quantizer.calib_dataloader,
178-
op_list=[(fc_node_name1, fc_op_name)],
178+
op_list=[fc_node_name1],
179179
iteration_list=[])
180180

181181
# test recovery for symbolic model

0 commit comments

Comments
 (0)