import numpy as np
a = np.arange(0, 12).reshape(3, 4)
b = np.arange(0, 4)
c = np.einsum('ij,j->i', a, b)
import numpy as np
a = np.arange(0, 12).reshape(3, 4)
b = np.arange(0, 12).reshape(3, 4)
c = np.einsum('ij,ij->', a, b)
import numpy as np
a = np.arange(0, 12).reshape(3, 4)
b = np.arange(0, 12).reshape(4, 3)
c = np.einsum('ik,kj->ij', a, b)
import torch
A = torch.randn(16, 8, 5, 128, 128)
B = torch.randn(16, 8, 5, 128, 128)
A = A.unsqueeze(3)
B = B.unsqueeze(2)
C = torch.einsum('ijklno,ijlmno->ijkmno', A, B)