목록분류 전체보기 (37)
말랑코딩

단순한 CNN 구현하기 SimpleConvNet 초기화(1/3) - 코드가 길어지므로 3단으로 나누어 설명 class SimpleConvNet: def __init__(self, input_dim = (1, 28, 28) conv_param={'filter_num':30, 'filter_size':5, 'pad':0, 'stride':1}, hidden_size=100, output_size=10, weight_init_std=0.01): filter_num = conv_param['filter_num'] filter_size = conv_param['filter_size'] filter_pad = conv_param['pad'] filter_stride = conv_param['stride'] inpu..

풀링 계층 구현하기 - 위 그림에서는 2x2 풀링 영역을 예로 듦. 위 그림에서, -입력데이터(3,4,4)를 2x2의 풀링영역으로 전개 -> (4,12) -전개된 데이터의 각 행에서 최대값 추출 -> (1,12) -기존 채널에 맞게 reshape -> (3,4) 풀링 계층 파이썬(python) 구현 class Pooling: def __init__(self, pool_h, pool_w, stride=1, pad=0): self.pool_h = pool_h self.pool_w = pool_w self.stride = self.stride self.pad = pad def forward(self, x): N, C, H, W = x.shape out_h = int(1 + (H - self.pool_h) / ..

im2col 함수를 사용해 합성곱 계층 구현하기 위 그림에서, 입력데이터와 필터를 im2col 함수로 2차원으로 줄세움. 둘을 곱한 2차원 출력데이터를 reshape 함수를 이용해 3차원으로 다시 만들어줌. im2col 함수 구현 - 필터까지 적용하여 3차원 img를 2차원으로 바꿔주는 함수 - stride, pad 옵션으로 지정 가능 def im2col(input_data, filter_h, filter_w, stride=1, pad=0): N, C, H, W = input_data.shape out_h = (H + 2 * pad - filter_h) // stride + 1 out_w = (W + 2 * pad - filter_w) // stride + 1 img = np.pad(input_data,..

1. 풀링 계층이란? ->가로,세로 방향의 공간을 줄이는 연산 위 그림처럼, 2x2의 윈도우에서 가장 큰 수를 출력값으로 뽑음. 여기서는 스트라이드 2로 처리함. => 이 과정을 최대 풀링 또는 맥스 풀링 이라고 함. 2. 풀링 계층 특징 1) 학습해야 할 매개변수가 없다 2) 채널 수가 변하지 않는다 3) 입력 변화에 영향을 적게 받는다 요약 -맥스 풀링은 지정한 윈도우에서 가장 큰 값을 출력데이터로 꺼내는 것 -맥스 풀링 적용 시 채널 수에 변화가 없고, 입력데이터가 조금 변하더라도 출력에 큰 차이가 없음

1. 합성곱 계층 탄생 배경 - 완전 연결 계층 : 데이터의 형상이 무시됨 (ex. 3차원 데이터 -> 1차원으로 줄세워버림) - 합성곱 계층 : 형상을 유지 (ex, 3차원 데이터를 그대로 사용) 2. 합성곱 연산 입력 : 4x4 필터(커널) : 3x3 출력 : 2x2 - 합성곱 연산 : 윈도우를 일정 간격으로 이동하며 계산. 윈도우는 위 그림에서 회색 부분에 해당. - 합성곱 연산 방법 : 왼쪽의 회색 영역(3x3)과 필터(3x3)를 왼쪽 위 원소부터 오른쪽으로 스캔해가며 각 원소를 곱하고 이를 모두 더함. => 단일 곱셈 누산(FMA) - 편향 : 필터 적용 후의 각 원소에 더해짐. 항상 하나만 존재(1x1). => 최종 출력 데이터 생성 3. 패딩 - 입력데이터(4x4) + 패딩(1) = 입력데이..

완전연결신경망(fully connected layer, FCN)은 - affine-ReLU(or sigmoid) 조합이 이어짐 - 출력단에서 affine-softmax -> 최종 확률을 출력 합성곱 신경망, 즉 CNN은 - 이제까지의 신경망과는 달리, affine-ReLU 단이 conv+ReLU+(pooling) 단으로 대체됨 - 출력에 가까운 층에서 affine-ReLU 사용 가능 - 출력계층에서 affine-softmax 그대로 사용