Table of Contents

keras 강좌

데이터셋을 훈련셋, 검증셋, 시험셋으로 나눈다.

세 개의 신호를 받아 하나의 신호를 전달하는 뉴런을 레고로 표현하면 다음과 같다.

입출력을 모두 연결해주는 Dense 레이어

Dense 레이어는 입력과 출력을 모두 연결해줍니다. 예를 들어 입력 뉴런이 4개, 출력 뉴런이 8개있다면 총 연결선은 32개 (4*8=32) 입니다. 각 연결선에는 가중치(weight)를 포함하고 있는데, 이 가중치가 나타내는 의미는 연결강도라고 보시면 됩니다. 현재 연결선이 32개이므로 가중치도 32개입니다.

snippet.python
Dense(8, input_dim=4, init='uniform', activation='relu')

주요 인자는 다음과 같습니다.

snippet.python
Dense(1, input_dim=3, activation='sigmoid')

다중클래스 분류문제에서는 클래스 수만큼 출력 뉴런이 필요합니다. 만약 세가지 종류로 분류한다면, 아래 코드처럼 출력 뉴런이 3개이고, 입력 뉴련과 가중치를 계산한 값을 각 클래스의 확률 개념으로 표현할 수 있는 활성화 함수인 softmax 를 사용합니다.

snippet.python
Dense(3, input_dim=4, activation='softmax')

Dense 레이어는 보통 출력층 이전의 은닉층으로도 많이 쓰이고, 영상이 아닌 수치자료 입력 시에는 입력층으로도 많이 쓰입니다. 이 때 활성화 함수로 'relu'가 주로 사용됩니다. 'relu'는 학습과정에서 역전파 시에 좋은 성능이 나는 것으로 알려져 있습니다.

snippet.python
Dense(4, input_dim=6, activation='relu')

다층 퍼셉트론 모델 만들어보기

  1. 문제 정의하기
  2. 데이터 준비하기
  3. 데이터셋 생성하기
  4. 모델 구성하기
  5. 모델 학습과정 설정하기
  6. 모델 학습시키기
  7. 모델평가하기

모델 학습과정 설정하기

모델을 정의했다면 모델을 손실함수와 최적화 알고리즘으로 엮어봅니다.

snippet.python
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

모델 학습시키기

모델을 학습시키기 위해서 fit()함수를 사용합니다.

snippet.python
model.fit(x_train, y_train, epochs=1500, batch_size=64)

컨볼루션 신경망 레이어 이야기

필터로 특징을 뽑아주는 컨볼루션(Convolution) 레이어

케라스에서 제공되는 컨볼루션 레이어 종류에도 여러가지가 있으나 영상 처리에 주로 사용되는 Conv2D 레이어를 살펴보겠습니다. 레이어는 영상 인식에 주로 사용되며, 필터가 탑재되어 있습니다. 아래는 Conv2D 클래스 사용 예제입니다.

snippet.python
Conv2D(32, (5, 5), padding='valid', input_shape=(28, 28, 1), activation='relu')

주요 인자는 다음과 같습니다.

데이터셋 생성하기

flowfromdirectory()

순환 신경망 레이어 이야기

출처