728x90
참고자료: 밑바닥부터 시작하는 딥러닝
1. 다차원 배열
import numpy as np
A = np.array([1, 2, 3, 4])
print(A) #[1 2 3 4]
print(np.ndim(A)) #1
print(A.shape) #(4,)
print(A.shape[0]) #4
👉🏻넘파이로 1차원 배열을 구현해보았다.
- np.dim(): 배열의 차원 수
- shape: 배열의 형상
B = np.array([[1, 2], [3, 4], [5, 6]])
print(B)
#[[1 2]
# [3 4]
# [5 6]]
print(np.ndim(B)) #2
print(B.shape) #(3, 2)
👉🏻넘파이를 통해 3x2 배열을 구현했다. 2차원 배열은 특히 행렬이라고 부른다.
2. 행렬의 곱
👉🏻행렬을 곱하는 방법은 위의 사진과 같다. 이는 넘파이 함수 dot()으로 계산할 수 있다.
import numpy as np
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
print(np.dot(A, B))
#[[19 22]
# [43 50]]
👉🏻np.dot()은 입력이 1차원 배열이면 백터를, 2차원 배열이면 행렬 곱을 계산한다.
✍🏻행렬의 형상: 행렬 A의 1번째 차원의 원소 수(열 수)와 행렬 B의 0번째 차원의 원소 수(행 수)가 같아야 한다.
3. 신경망에서의 행렬 곱
넘파이 행렬을 써서 신경망을 구현해보자. 이 신경망은 편향과 활성화 함수를 생략하고 가중치만 갖도록 해보자
X = np.array([1, 2])
W = np.array([[1, 3, 5], [2, 4, 6]])
Y = np.dot(X, W)
print(Y)
#[ 5 11 17]
👉🏻행렬의 곱으로 한꺼번에 계산해주는 기능은 신경망을 구현할 때 매우 중요한 역할을 한다.
728x90
'그 땐 AI했지 > 그 땐 DeepLearning했지' 카테고리의 다른 글
[TAVE/밑딥] ch03 신경망 | 04 3층 신경망 구현하기 (0) | 2022.06.03 |
---|---|
[TAVE/밑딥] ch03 신경망 | 02 활성화 함수 (0) | 2022.06.02 |
[TAVE/밑딥] ch03 신경망 | 01 퍼셉트론에서 신경망으로 (0) | 2022.06.02 |
[TAVE/밑딥] ch02 퍼셉트론 | 06 NAND에서 컴퓨터까지 (0) | 2022.05.27 |
[TAVE/밑딥] ch02 퍼셉트론 | 05 다층 퍼셉트론이 충돌한다면 (0) | 2022.05.27 |