8장 이미지 분류 - 합성곱 신경망 (3)
8-3 합성곱 신경망의 구조 - 렐루 함수 (ReLU) 0보다 큰 값은 그대로 통과, 0보다 작은 값은 0으로 - 렐루 함수 구현 def relu(x): return np.maximum(x, 0) x= np.array([-1, 2, -3, 4, -5]) relu(x) ##출력: array([0, 2, 0, 4, 0]) r_out = tf.nn.relu(x) r_out.numpy() ##출력: array([0, 2, 0, 4, 0]) - 렐루 함수의 도함수 입력이 0보다 크면 1 입력이 0보다 작으면 0 - 합성곱 신경망에서 일어나는 일들과 구조 합성곱 신경망에 주입될 입력 데이터에는 채널이 있음 이미지의 픽셀에 가진 색상의 표현하기 위한 정보인 채널(channel)이라는 차원 존재 빨간색(Red), 파란..
8장 이미지 분류 - 합성곱 신경망 (2)
- 2차원 배열에서 합성곱 수행 1차원과 유사하게 원본 배열의 왼쪽에서 오른쪽으로, 위에서 아래쪽으로 1칸씩 이둥 2차원 원본 배열 x, 미끄러지는 배열 w 원본 배열의 왼쪽 모서리 끝에 미끄러지는 배열을 맞추고 합성곱 수행 (1x2+2x0+4x0+5x0) 미끄러지는 배열을 옮기며 합성곱 수행(밸리드 패딩) x = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) w = np.array([[2, 0], [0, 0]]) from scipy.signal import correlate2d correlate2d(x, w, mode='valid') ##출력: array([[ 2, 4], [ 8, 10]]) 세임 패딩의 경우 오른쪽과 아래쪽 모서리에 제로 패딩 추가 correlate2d..
8장 이미지 분류 - 합성곱 신경망 (1)
8-1 합성곱(Convolution) 연산 - 합성곱 이해하기 - 합성곱 구현하기 1. 넘파이 배열 정의하고 배열 하나 선택해 뒤집기 import numpy as np w = np.array([2, 1, 5, 3]) x = np.array([2, 8, 3, 7, 1, 2, 0, 4, 5]) w_r = np.flip(w) print(w_r) ##출력: [3 5 1 2] 2. 넘파이의 점 곱으로 합성곱 수행하기 for i in range(6): print(np.dot(x[i:i+4], w_r)) ##출력: 63 48 49 28 21 20 3. 싸이파이로 합성곱 수행하기 from scipy.signal import convolve convolve(x, w, mode='valid') ##출력: array([63..