There doesn’t seem to be any Kronecker Product functionality in MXNet. I’ve resorted to this (admittedly terrible) hack for the 2D case - keeping it here for reference (shouldn’t be hard to generalize it to ND):
def kron(a, b):
s1, s2 = infer_shape(a)
s3, s4 = infer_shape(b)
return mx.sym.reshape(mx.sym.broadcast_mul(mx.sym.reshape(a, (s1, 1, s2, 1)), mx.sym.reshape(b, (1, s3, 1, s4))), (s1*s3, s2*s4))