Fundamental Node

[딥러닝]딥러닝 구조 및 학습-레이어

玄曄 2022. 3. 25. 21:57

[딥러닝]딥러닝 구조 및 학습-레이어

1. Dense

2. Activation

3. Flatten

4. Input

======================

 

[딥러닝]딥러닝 구조 및 학습-레이어

 

0. 레이어 개요

- 신경망의 핵심 데이터 구조

- 하나 이상의 텐서를 입력받아 하나 이상의 텐서를 출력하는 데이터 처리 모듈

- 상태가 없는 레이어도 있지만, 대부분 가중치(weight)라는 레이어 상태를 가짐

- 가중치는 확률적 경사하강법에 의해 학습되는 하나 이상의 텐서

- 케라스에서 사용되는 주요 레이어 : Dense, Activation, Flatten, Input

 

1. Dense

- 완전연결계층(Fully-Connected Layer)

- 노드수(유닛수), 활성화 함수(activation) 등을 지정

Dense(10, activation='softmax')

- name을 통해 레이어간 구분 가능

Dense(10, activation='relu', name='Dense Layer')

- 가중치 초기화(kernel_initializer)

Dense(10, kernel_initializer='he_normal', name='Dense Layer')

※  가중치 초기화

- 신경망의 성능에 큰 영향을 주는 요소

- 보통 가중치의 초기값으로 0에 가까운 무작위 값 사용

- 특정 구조의 신경망을 동일한 학습 데이터로 학습시키더라도, 가중치의 초기값에 따라 학습된 신경망의 성능 차이가 날 수 있음.

- 오차역전파 알고리즘은 기본적으로 경사하강법을 사용하기 때문에 최적해가 아닌 지역해에 빠질 가능성이 있음.

- keras에서는 기본적으로 Glorot unform가중치(Xavier 분포 초기화), zeros bias로 초기화

- kernel_initializer 인자를 통해 다른 가중치 초기화 지정 가능

- keras에서 제공하는 가중치 초기화 종류 https://keras.io/api/layers/initializers/

 

2. Activation

- Dense layer에서 미리 활성화 함수를 지정할 수도 있지만, 필요에 따라 별도 레이어를 만들어줄 수 있음.

- keras에서 제공하는 활성화함수 종류 : https://keras.io/ko/activations/

dense = Dense(10, activation='relu', name='Dense Layer')
Activation(dense)

 

3. Flatten

- 배치 크기(또는 데이터 크기)를 제외하고 데이터를 1차원으로 쭉 펼치는 작업

- 예시 : (128, 3, 2, 3) -> (128, 12)

Flatten(input_shape=(128, 3, 2, 2))

 

4. Input

- 모델의 입력을 정의

- shape, dtype을 포함.

- 하나의 모델은 여러 개의 입력을 가질 수 있음

- summary() 메소드를 통해서는 보이지 않음

- plot_model()메소드로 확인 가능

Input(shape=(28, 28), dtype=tf.float32)