728x90
반응형
브로드캐스팅 (Broadcasting)
일정 조건을 부합하는 다른 형태의 배열끼리 연산을 수행하는 것
요소를 흩뿌리듯이 계산된다.
x1 = np.array([1.0, 2.0, 3.0])
y1 = np.array([5.0, 10.0, 15.0])
x2 = np.array([[1.0, 2.0],
[3.0, 4.0]])
y2 = np.array([[5.0, 10.0],
[15.0, 20.0]])
z1 = np.array([-1.0, -2.0])
z2 = np.array([[5.0],
[10.0],
[15.0]])
# x1과 상수
print(x1 + 2) # [ 3. 4. 5.]
# x1과 y1
print(x1 + y1) # [ 6. 12. 18.]
# x2과 y2
print(x2 - y2)
# [[ -4. -8.]
# [-12. -16.]]
# x2과 z1
print(x2 * z1)
# [[-1. -4.]
# [-3. -8.]]
# x1과 z2
print(x1 / z2)
#[[0.2 0.4 0.6 ]
# [0.1 0.2 0.3 ]
# [0.06666667 0.13333333 0.2 ]]
x2(2x2)과 z1(2x1) 브로드캐스팅
x2[0] * z1 = [1.0,2.0] * [-1.0,-2.0] = [-1. -4.]
x2[1] * z1 = [3.0,4.0] * [-1.0,-2.0] = [-3. -8.]
x1(3x1)과 z2(1x3) 브로드캐스팅
x1 / z2[0] = [1.0,2.0,3.0] / [5.0] = [0.2 0.4 0.6 ]
x1 / z2[1] = [1.0,2.0,3.0] / [10.0] = [0.1 0.2 0.3 ]
x1 / z2[2] = [1.0,2.0,3.0] / [15.0] = [0.06666667 0.13333333 0.2 ]
벡터의 내적 (행렬 곱)
변수1@변수2, np.dot(변수1,변수2), 변수1.dot(변수2)
이를 이용해서 신경망 계산을 수행한다.
y1 = 1*x1 + 2*x2
y2 = 3*x1 + 4*x2
y3 = 5*x1 + 6*x2
x1 = np.array([1.0,2.0,3.0])
y1 = np.array([5.0,10.0,15.0])
x2 = np.array([[1.0,2.0],[3.0,4.0]])
y2 = np.array([[5.0,10.0],[15.0,20.0]])
z1 = np.array([-1.0,-2.0])
z2 = np.array([[5.0],[10.0],[15.0]])
print(x1@z2) # [70.]
print(np.dot(z1,x2)) # [ -7. -10.]
print(z1.dot(y2)) # [-35. -50.]
728x90
반응형
'Python 파이썬 > numpy' 카테고리의 다른 글
numpy ) 함수 (0) | 2022.03.19 |
---|---|
numpy ) 배열 array 인덱싱, 슬라이싱, 반복 (0) | 2022.03.19 |
numpy ) 배열 array 형 변환 (0) | 2022.03.19 |
numpy ) 배열 array 생성 (0) | 2022.03.18 |
numpy ) 넘파이 개요 (0) | 2022.03.18 |
댓글