티스토리 뷰
1. Introduction to Deep Learning / L5. Matrix Math and NumPy Refresher - Matrix Multiplication in NumPy
chrisysl 2018. 6. 23. 19:54Matrix Multiplication : Part 1
- Element-wise Operation에 관해서 앞서 다뤘었다.
- 이번엔 Matrix Multiplication에 대해 알아볼거고 더 복잡한 편이다.
- 대부분의 행렬 곱셈은 Matrix Multiplication을 의미하는것이 아니라 Matrix Product를 의미한다.
- 일반적인 행렬식의 곱셈을 짚고 넘어가보자.
- 행렬 A의 첫번째 행벡터와 행렬 B의 첫번쨰 열벡터간의 각 인덱스가 일치하는 원소끼리의 곱을 모두 합한것이
- Matrix Product의 결과가 된다.
- 두가지 동일한 길이의 벡터가 있을때 같은 인덱스에 위치한 원소끼리의 곱을 합한 결과를 dot products 라 부른다.
Matrix Multiplication : Part 2
- 행렬식의 곱셈에서는 product연산을 진행할 두 행렬의 shape에 대해 행렬 A의 행의개수와 행렬B의 열의 개수가 동일해야
- Matrix product 연산을 진행 할 수 있다.
- 또 한가지 중요 특징은, 행렬식에서 교환법칙이 성립하지 않는다는 점이다.
정리
- 행렬 A, B간의 곱셈 연산을 진행하려면 A의 열의개수가 B의 행의개수와 일치해야함
- 또한 그 결과는 행렬 A의 행의개수 by 행렬 B의 열의개수 로 shape이 결정됨
- 두 행렬간의 교환법칙이 성립하지 않음
- 행렬 A의 데이터는 행으로 배열되고, 행렬 B의 데이터는 열로 배열된다.
Numpy Matrix Multiplication
· Element-wise Multiplication
- 인덱스에 대응되는 요소끼리의 곱셈
- NumPy의 multiply 함수를 사용하거나 * 연산자를 사용하면 된다.
· Matrix Product
- NumPy의 matmul 함수를 이용하면 product계산이 가능하다.
- 연산 가능한 두 행렬(compatible shapes)에 대해 matmul함수를 이용하여 계산해주면 됨
· NumPy's dot function
- matmul 함수를 이용한 연산을 예상한 곳에서 dot 함수를 이용한 처리가 된 것을 볼 때가 있을것인데,
- 이는 해당 행렬이 2차원일 경우 동일한 결과를 보이기 때문이다.
- 2차원 데이터에 대해 동일한 결과를 반환하지만, 서로 다른 shape끼리는 주의해아함
- matmul 과 dot 의 차이점에대해서는 여기(matmul) 와 여기(dot) 를 확인.