MCPcopy
hub / github.com/OpenPPL/ppq / parse

Method parse

ppq/parser/caffe/caffe_export_utils.py:380–410  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

378@register_class
379class Gemm(CaffeOpExporter):
380 def parse(self):
381 super(Gemm, self).parse()
382 # Whether need to add transpose layer
383 transpose_layer = None
384 if refine_value(self.op.attributes.get('transA', 0)) != 0:
385 A = self.op.inputs[0]
386 shape = A.shape
387 if len(shape) == 2:
388 transpose_layer = ppl_caffe_pb2.LayerParameter(type='Transpose', name=self.op.name + '_transposed')
389 transpose_layer.bottom[:] = [A.name]
390 transpose_layer.top[:] = [A.name + '_trans']
391 transpose_layer.transpose_param.dim[:] = [1, 0]
392 # Modify InnerProduct input
393 self.layer.bottom[:] = [A.name + '_trans']
394 else:
395 raise ValueError('Cannot support transposed gemm with non-2D input.')
396
397 if self.op.attributes.get('transB', 0) == 0:
398 B = convert_any_to_numpy(self.op.parameters[0].value)
399 BT_value = np.transpose(B, [1, 0])
400 self.layer.blobs[0].shape.dim[:] = BT_value.shape
401 self.layer.blobs[0].data[:] = BT_value.astype('float32').flat
402
403 self.layer.inner_product_param.axis = self.op.attributes.get('axis', 1)
404 self.layer.inner_product_param.num_output = self.layer.blobs[0].shape.dim[0]
405 self.layer.inner_product_param.bias_term = True if len(self.op.parameters) == 2 else False
406
407 if transpose_layer is None:
408 return self.layer
409 else:
410 return [transpose_layer, self.layer]
411
412
413@register_class

Callers

nothing calls this directly

Calls 3

convert_any_to_numpyFunction · 0.90
refine_valueFunction · 0.85
parseMethod · 0.45

Tested by

no test coverage detected