본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

인공지능/NumPy

numpy dot() @, (A*B) * (C*D) 가운데 있는 숫자 B와 C가 같으면 계산이 된다 : 왜 크기가 다른 행렬의 곱셈은 앞에 열의 수와 뒤의 행의 수가 같아야 계산이 가능할까?


왜 이렇게 계산할까?

이는 행렬이 왜 존재하느냐와 연결된다.

행렬은 '변환'을 표현하기 위해 만들어졌다.

단순한 숫자놀이가 아닌 여러계산을 한번에 처리하기 위한 방식이다.

백터가 숫자의 묶음이라면 행렬은 여러개의 계산식과 같다. 

 

[
 [1 2 3]
 [4 5 6]
]

[x, y, z]

인 행렬은

1x + 2y + 3z

4x + 5y + 6z를 표현했다고 이해해보자. 

 

 

행렬의 곱은 한줄의 계산식과 입력값 묶음을 계산하는 구조임을 이해한다면

 

행 [1, 2, 3]에

[10, 

20, 

30]

을 입력해 계산한다는 과정을 이해할 수 있다. 

https://standout.tistory.com/1727

 

np.dot()에서 왜 1차원배열이 세로벡터처럼 계산될까?

여기서 x는 1차원배열이었는데 np.dor하는순간 왜 세로벡터처럼 계산될까? 행렬곱의 규칙 때문이다. 이를 수학에서는 엄격히 구분하지만 NumPy의 1차원 배열은 방향이 없는 벡터이고, dot 연산 시 자

standout.tistory.com

 

 

즉 행은 계산식이고 열은 입력값으로 인식하게되는데

행렬곱은 모든 계산식을 한번에 처리하는 구조임으로 앞은 '계산식'역할 뒤에 오늘 배열은 '입력값역할' 이라고 이해할 수 있다 .

 

 

여기서 첫번째 문단이 이해된다.


이는 행렬이 왜 존재하느냐와 연결된다.
행렬은 '변환'을 표현하기 위해 만들어졌다.
단순한 숫자놀이가 아닌 여러계산을 한번에 처리하기 위한 방식이다.
백터가 숫자의 묶음이라면 행렬은 여러개의 계산식과 같다. 

 

 

 

즉 이제 앞선배열의 가로줄의 숫자와 뒤배열의 세로줄 수가 같아야 이 '계산식'이 계산이 될수있을테니

(A*B) * (C*D)일때

즉 식이 3문자일때 뒤에 오는 입력값묶음의 줄수가 3줄이어야한다는말.

그말이 쉽게 말해서  가운데 있는 숫자 B와 C가 같으면 계산이 된다~ 라는 의미겠다.