반응형

numpy를 이용하여 행렬을 계산 할 수 있다.

 

이때

a = np.array([1,2])

b = np.array([3,4])는 행렬의 계산이 아니고 그냥 각 행/열에 맞게 계산을 하는 것이다.

즉, [3,8]이 결과로 나온다.

 

이와 다르게 수학시간에 배운 행렬의 곱셈 연산을 np.dot()함수가 지원해준다.

 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#기본적인 numpy에서 볼 수 있는 형태
 
import numpy as np
 
tmp = [i for i in range(0,10)]
 
= np.array(tmp)
print(x)
 
np.ndim(x) # 배열의 차원 수 확인 가능 현재 1차원이니 출력이 1로 나온다.
x.shape # 배열의 형상 반환 (10,)
 
= np.array([[1,2],[2,3],[5,6]])
np.ndim(y) # 2차원이니 2 출력
y.shape # 3행 2열이니 (3,2) 튜플 출력
 
cs



1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 행렬의 곱
 
= np.array([[1,2],[3,4]])
= np.array([[5,6],[7,8]])
 
= np.dot(a,b) # 행렬 곱은 dot로 가능하다.
= a * b # d는 행렬 곱이 아닌 각 행,열의 위치에 맞는 인덱스끼리 곱하는 과정이다.
print(c)
print(d)
 
np.ndim(c) # 2
 
c.shape # (2,2)
 
cs

 


아래는 행렬의 곱을 응용하여 신경망에 적용해보는 방법이다.


행렬의 성질을 이용하면 신경망을 만들어내는 데 이용 할 수 있다.


1
2
3
4
5
6
7
8
9
10
11
12
# 신경망에 행렬의 곱 적용
 
= np.array([5,10])
 
= np.array([[1,3,5],[2,4,6]])
 
print(w)
 
w.shape
 
= np.dot(x,w)
print(y)
cs


 

 

 

 

 

반응형