본문 바로가기
  • 비둘기다
  • 비둘기다
  • 비둘기다

AI/Deep learning from Scratch16

[머신러닝, 딥러닝] 합성곱 신경망 (3) CNN 구현하기 이전까지 합성곱 신경망에 등장하는 계층들을 소개하고 이들을 구현해 보았습니다. 그럼 이제 손글씨 숫자를 인식하는 CNN을 조합하여 만들어보겠습니다. 위는 단순한 CNN 네트워크입니다. 먼저 __init__으로 초기화를 하는 부분입니다. 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_p.. 2023. 3. 1.
[머신러닝, 딥러닝] 합성곱 신경망 (2) 이전 페이지에서 합성곱 신경망의 전체적인 구조와 그중 합성곱층에 대해 소개를 했습니다. 이번에는 다음 층인 풀링층부터 알아보도록 하겠습니다. 풀링 계층 풀링층이 하는 역할은 간단합니다. 바로 이미지를 축소시키는 것입니다. 풀링층은 특성 맵의 차원을 다운 샘플링하여 연산량을 감소시키고, 주요한 특성 벡터를 추출하여 학습을 효과적으로 할 수 있게 합니다. 다운 샘플링이란 이미지를 축소시키는 것을 의미합니다. 풀링 연산에는 두 가지가 사용되는데 최대 풀링과 평균 풀링이 있습니다. 최대 풀링은 최댓값을 추출하는 것이고 평균 풀링은 평균을 반환하는 것입니다. 위 사진이 최대 풀링을 하는 과정입니다. 두 칸 씩 이동하기 때문에 스트라이드는 2인 것을 알 수 있습니다. 간단하게 평균 풀링도 계산해보시면 알겠지만 도출.. 2023. 3. 1.
[머신러닝, 딥러닝] 합성곱 신경망 (1) 합성곱 신경망에 대해 알아보겠습니다. 합성곱 신경망은 딥러닝을 하면서 많이 볼 수 있는 단어 중 하나인데 이토록 언급이 많이 되는 이유는 이미지 인식과 음성 인식 등에 사용되기 때문입니다. 합성곱 신경망의 전체적인 구조에 대해 살펴보면 이전과 유사함을 알 수 있습니다. 입력층 -> 합성곱층 -> 풀링층 -> 완전연결층 -> 출력층 위가 합성곱 신경망의 전체적인 구조인데 은닉층이 빠지고 그 자리에 새로운 계층들이 등장합니다. 이중 완전연결층은 이전에 다룬 Affine 계층이라는 이름으로 구현하였는데 Affine 계층은 완전연결층이라는 것이 걸맞게 인접하는 계층의 모든 뉴런들에 결합되어 있습니다. 이러한 사항들을 고려한다면 일반적인 신경망에서의 Affine 계층은 위와 같은 꼴을 하고 있을 것입니다. 그러나.. 2023. 3. 1.
[머신러닝, 딥러닝] 오차역전파법 (3) - 오차역전파법 구현 이번 페이지에서는 이전에 구현한 계층과 기타 함수들을 바탕으로 오차역전파법을 적용한 신경망과 학습을 구현합니다. 먼저 오차역전파법을 적용한 신경망입니다. from layers import * from gradient import numerical_gradient from collections import OrderedDict class TwoLayerNet: def __init__(self, input_size, hidden_size, output_size, weight_init_std = 0.01): # 가중치 초기화 self.params = {} self.params['W1'] = weight_init_std * np.random.randn(input_size, hidden_size) self.par.. 2023. 2. 15.