-
[딥러닝]딥러닝 구조 및 학습-레이어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)
'Fundamental Node' 카테고리의 다른 글
[파이썬]04. 리스트, 튜플, 세트, 딕셔너리 (0) 2022.03.28 [딥러닝구조 및 학습]모델 (0) 2022.03.26 [딥러닝]드롭아웃(Dropout) (0) 2022.03.24 [딥러닝]가중치 초기화 (0) 2022.03.24 [딥러닝]옵티마이저2: Adagrad(Adaptive Gradient) (0) 2022.03.24