반응형
Kears란?
케라스(Keras)는 파이썬으로 작성된 오픈 소스 신경망 라이브러리입니다. 케라스는 딥러닝 비전문가라도 각자 분야에서 손쉽게 딥러닝 모델을 개발하고 활용할 수 있도록 직관적인 API를 제공하고 있습니다. 케라스는 텐서플로 위에서 동작하는 라이브러리 입니다. 처음 머신러닝, 딥러닝을 시작하고 매우 간단한 것을 제작하거나 빠른 시간 내에 프로토타이핑을 하고자 한다면 Keras가 훨씬 좋은 선택일 수 있습니다.
keras.layers.Dense 레이어란?
Dense 레이어는 입력과 출력을 모두 연결해주는 fully-connected layer이다. 이렇게 모두 연결된 모습이 조밀(dense)하기 때문에 Dense 레이어라고 부른다. 해당 레이어는 output = activation(dot(input, kernel) + bias)
연산을 수행한다. 가장 일반적인 input tensor는 (batch_size, input_dim)
shape의 2D 텐서이지만, (batch_size, ..., input_dim)
shape의 N-D 텐서도 가능하다. ouput tensor는 2D인 경우 (batch_size, units)
이고, N-D인 경우 (batch_size, ..., units)
이다. 즉, units
에 따라서 output의 모양이 달라진다. 여기서 units
란 출력 공간의 차원으로, output neuron의 수를 의미한다. units
의 수가 많아지면 모델이 복잡해지고 표현력이 증가하지만, 그만큼 overfitting의 위험성도 증가한다.
Dense 레이어는 데이터의 가중치와 편향을 업데이트하고, 활성화함수를 통해 데이터의 비선향성을 추가해 데이터에서 의미있는 feature를 추출할 수 있도록 돕는다.
Dense 레이어의 옵션들
공식 문서에서는 다음과 같은 옵션을 지정할 수 있다고 알려주고 있다.
keras.layers.Dense(
units,
activation=None,
use_bias=True,
kernel_initializer="glorot_uniform",
bias_initializer="zeros",
kernel_regularizer=None,
bias_regularizer=None,
activity_regularizer=None,
kernel_constraint=None,
bias_constraint=None,
lora_rank=None,
**kwargs
)
옵션들의 내용을 살펴보면 다음과 같다.
- units: 출력 공간의 차원(=output neurons의 수)
- activation: 사용할 활성화 함수. 아무것도 지정하지 않으면 활성화 함수가 적용되지 않는다.
- use_bias: 레이어가 편향(bias) 벡터를 사용하는지 여부
- kernel_initializer: kernel 가중치 행렬의 초기화 세팅
- bias_initializer: 편향 벡터의 초기화 세팅
- kernel_regularizer: kernel 가중치 행렬에 적용되는 정규화 함수
- bias_regularizer: 편향 벡터에 적용되는 정규화 함수
- activity_regularizer: 레이어 출력(활성화)에 적용되는 정규화 함수
- kernel_constraint: kernel 가중치 행렬에 적용되는 제약 함수
- bias_constraint: 편향 벡터에 적용되는 제약 함수
- lora_rank: 선택적 정수로, 설정된 경우 레이어의 순방향 패스(forward pass)는 제공된 순위로 LoRA(낮은 순위 적응)를 구현한다. LoRA는 계층의 커널을 훈련 불가능으로 설정하고 이를 두 개의 하위 훈련 가능한 행렬을 곱하여 얻은 원래 커널에 대한 델타로 대체한다. 이는 크고 조밀한 레이어를 미세 조정하는 데 드는 계산 비용을 줄이는 데 유용할 수 있다. Dense를 호출하여 기존 레이어에서 LoRA를 활성화할 수도 있다.
Dense 레이어 구현
모델에 해당 레이어를 추가해주고 싶다면 다음과 같이 하면 된다.
from keras.layers import Dense
model = Sequential()
model.add(Dense(units=64, activation=relu))
데이터를 직접 해당 레이어에 집어넣고 싶다면, 다음과 같이 하면 된다.
from keras.layers import Dense
output_data = Dense(units=64, activation=relu)(input_data)
참고 문헌
반응형
'🤖AIML' 카테고리의 다른 글
[Keras] keras.layers.Dropout 레이어 이해하기 (0) | 2024.02.21 |
---|---|
[Keras] keras.layers.Flatten 레이어 이해하기 (0) | 2024.02.19 |
[트렌스포머 모델 이해하기] Self-Attention에서 Q, K, V(Query, Key, Value)의 의미 (0) | 2024.01.22 |
이진 분류 및 멀티 클래스 분류에서 TP, TN, FP, FN, Recall, Precision, Accuracy 계산하기(Binary Classification & Muti-class Classification) (0) | 2024.01.19 |
리눅스에서 Anaconda 설치 및 가상 환경 사용하기 (0) | 2023.12.25 |