What is the use of @ between two matrices I was looking into a repo, where I came across this snippet of code:

priors = x[None, :, :, None, :] @ self.route_weights[:, None, :, :, :]

It basically tried to incorporate weights of an input image matrix.
I am really not sure what is the use of @ out here and what are the advantages of using this. Is there any simple alternative too, like won't simple matrix multiplication work?
According to here,  the matmul function implements the semantics of the @ operator introduced in Python 3.5 following PEP465.

Hence, rather than np.matmul(a,b).

We can use a @ b instead.