def __init__(self, net, input_nodes): self._op_shape_inference = { MaceOp.Conv2D.name: self.infer_shape_conv_pool_shape, MaceOp.Deconv2D.name: self.infer_shape_deconv, MaceOp.DepthwiseConv2d.name: self.infer_shape_conv_pool_shape, MaceOp.Eltwise.name: self.infer_shape_general, MaceOp.FoldedBatchNorm.name: self.infer_shape_general, MaceOp.AddN.name: self.infer_shape_general, MaceOp.Activation.name: self.infer_shape_general, MaceOp.Pooling.name: self.infer_shape_conv_pool_shape, MaceOp.Concat.name: self.infer_shape_concat, MaceOp.Split.name: self.infer_shape_slice, MaceOp.Softmax.name: self.infer_shape_general, MaceOp.FullyConnected.name: self.infer_shape_fully_connected, MaceOp.Crop.name: self.infer_shape_crop, } self._net = net self._output_shape_cache = {} for input_node in input_nodes: input_shape = input_node.shape[:] # transpose input from NCHW to NHWC Transformer.transpose_shape(input_shape, [0, 3, 1, 2]) self._output_shape_cache[input_node.name] = input_shape for tensor in net.tensors: self._output_shape_cache[tensor.name] = list(tensor.dims)
def __init__(self, net, input_nodes): self._op_shape_inference = { MaceOp.Conv2D.name: self.infer_shape_conv_pool_shape, MaceOp.Deconv2D.name: self.infer_shape_deconv, MaceOp.DepthwiseConv2d.name: self.infer_shape_conv_pool_shape, MaceOp.DepthwiseDeconv2d.name: self.infer_shape_deconv, MaceOp.Eltwise.name: self.infer_shape_general, MaceOp.BatchNorm.name: self.infer_shape_general, MaceOp.AddN.name: self.infer_shape_general, MaceOp.Activation.name: self.infer_shape_general, MaceOp.Pooling.name: self.infer_shape_conv_pool_shape, MaceOp.Concat.name: self.infer_shape_concat, MaceOp.Split.name: self.infer_shape_slice, MaceOp.Softmax.name: self.infer_shape_general, MaceOp.FullyConnected.name: self.infer_shape_fully_connected, MaceOp.Crop.name: self.infer_shape_crop, MaceOp.BiasAdd.name: self.infer_shape_general, MaceOp.ChannelShuffle.name: self.infer_shape_channel_shuffle, MaceOp.Transpose.name: self.infer_shape_permute, MaceOp.PriorBox.name: self.infer_shape_prior_box, MaceOp.Reshape.name: self.infer_shape_reshape, MaceOp.ResizeBilinear.name: self.infer_shape_resize_bilinear, } self._net = net self._output_shape_cache = {} for input_node in input_nodes: input_shape = input_node.shape[:] # transpose input from NCHW to NHWC Transformer.transpose_shape(input_shape, [0, 3, 1, 2]) self._output_shape_cache[input_node.name] = input_shape for tensor in net.tensors: self._output_shape_cache[tensor.name] = list(tensor.dims)
def __init__(self, net, input_nodes): self._op_shape_inference = { MaceOp.Conv2D.name: self.infer_shape_conv_pool_shape, MaceOp.DepthwiseConv2d.name: self.infer_shape_conv_pool_shape, MaceOp.Eltwise.name: self.infer_shape_general, MaceOp.FoldedBatchNorm.name: self.infer_shape_general, MaceOp.AddN.name: self.infer_shape_general, MaceOp.Activation.name: self.infer_shape_general, MaceOp.Pooling.name: self.infer_shape_conv_pool_shape, MaceOp.Concat.name: self.infer_shape_concat, MaceOp.Slice.name: self.infer_shape_slice, MaceOp.Softmax.name: self.infer_shape_general, MaceOp.FullyConnected.name: self.infer_shape_fully_connected, } self._net = net self._output_shape_cache = {} for input_node in input_nodes: input_shape = input_node.shape[:] # transpose input from NCHW to NHWC Transformer.transpose_shape(input_shape, [0, 3, 1, 2]) self._output_shape_cache[input_node.name] = input_shape for tensor in net.tensors: self._output_shape_cache[tensor.name] = list(tensor.dims)