Matrix multiplication (matrix-matrix product) using broadcasting

lesson4-mnist_sgd.ipynb talks about broadcasting and gives matrix-matrix product as an example. The video shows how to derive the individual columns.

Here I am just noting that the entire product can be performed as follows:

m = np.array([[1, 2, 3], [4,5,6], [7,8,9]])
n = np.array([[10,40],[20,0],[30,-5]])
(m[..., None] * n[None]).sum(axis=1)