in mmdnn/conversion/onnx/shape_inference.py [0:0]
def Conv(shapeX, shapeW, auto_pad = None, dilations = None, group = None, kernel_shape = None, pads = None, strides = None):
#Don't support auto_pad current!
# 2018-02-28
#if group is None:
# group = 1
# group is not support yet too.
kernelDim = len(shapeX) - 2
if kernel_shape is None:
kernel_shape = shapeW[2:] #[[1 for _ in range(kernelDimSize)] for _ in range(kernelDimSize)]
if pads is None:
[0 for _ in range(kernelDim * 2)]
if strides is None:
[1 for _ in range(kernelDim)]
if pads is None:
pads = [0 for _ in range(kernelDim * 2)]
if strides is None:
strides = [1 for _ in range(kernelDim)]
if dilations is None:
dilations = [1 for _ in range(kernelDim)]
retShape = [shapeX[0], shapeW[0]]
dimIdx = 0
for dimSize in shapeX[2:]:
padUpper = pads[dimIdx * 2]
padLower = pads[dimIdx * 2 + 1]
stride = strides[dimIdx]
dilation = dilations[dimIdx]
kernelDimSize = (kernel_shape[dimIdx] - 1) // 2 * dilation * 2 + 1
retShape.append((dimSize + padUpper + padLower - kernelDimSize) // stride + 1)
dimIdx = dimIdx + 1
return retShape