파이썬

Einsum (Einstein Summation)

디다새 2021. 10. 31. 13:54

einsum 연산은 Einstein Summation Convention에 따라 연산을 진행하는 방법이라고 한다. 위키에서 Einstein Notation에 대한 내용을 살펴보면 "한 항에 동일한 첨자가 윗첨자와 아랫첨자로 한 번씩 짝을 지어 나타날 경우, (마치 합의 기호가 항의 앞에 있을 때처럼) 해당 첨자가 가질 있는 모든 값에 대해 항의 값을 전부 더하는 것으로 이해한다."고 나타나 있다. 즉, 특정 index 집합에 대한 연산(일반적인 ∑index set 연산) 을 간결하게 표시하는 방법이다.

 

einsum 연산을 통해 행렬, 벡터의 내적(dot products), 외적(outer products), 전치(transpose), 대각합(trace), 행렬곱(multiplication) 등을 일관성있게 표현할 수 있다.

 

einsum 연산은 numpy(np.einsum), torch(torch.einsum), tensorflow(tf.einsum)과 같이 자주 사용하는 연산 라이브러리에 모두 구현되어 있으며, 세 경우 모두 einsum(equation, operands)와 같이 인자로 equation과 operands를 받는다.