Yeah, some of the broadcasting doesn't match numpy.
If you're trying to matrix multiply each matrix in the 3d tensor by the matrix that is the 2d tensor, like `Cijl = np.matmul(Aijk,Bkl)` you can do it with a simple reshape.
think of all the matrices in `Aijk` as being one big matrix with `i*j` rows, just folded up. So unfold it, do a regular matmul, and refold it: `tf.reshape(tf.matmul(tf.reshape(Aijk,[i*j,k]),Bkl),[i,j,l])`