Hi! I have two matrices for which I need to calculate the dot product, but only for one dimension. They are of the same shape `(N,M,D)`

and I want to take the dot product of the last dimension `D`

so that the result is of shape `(N,M,1)`

. How would I do that? Most solutions seem to assume stuff about number of dimensions etc.

I think you can use einsum see below for a small example. It felt a bit confusing doing dot product over multiple dimensions but it seems to make sense to me after a few examples.

```
N, M, D = 2, 3, 4
x = torch.ones((N,M,D))
y = torch.ones((N,M,D))
torch.einsum('ijk,ijk->ij', x, y).unsqueeze(2) # will be shape (N, M, 1)
```

That actually does seem to work! Thanks