[Keras] keras.layers.Dense 레이어 이해하기

2024. 2. 19. 15:55· 🤖AIML
목차
  1. Kears란?
  2. keras.layers.Dense 레이어란?
  3. Dense 레이어의 옵션들
  4. Dense 레이어 구현
  5. 참고 문헌
반응형

Kears란?

케라스(Keras)는 파이썬으로 작성된 오픈 소스 신경망 라이브러리입니다. 케라스는 딥러닝 비전문가라도 각자 분야에서 손쉽게 딥러닝 모델을 개발하고 활용할 수 있도록 직관적인 API를 제공하고 있습니다. 케라스는 텐서플로 위에서 동작하는 라이브러리 입니다. 처음 머신러닝, 딥러닝을 시작하고 매우 간단한 것을 제작하거나 빠른 시간 내에 프로토타이핑을 하고자 한다면 Keras가 훨씬 좋은 선택일 수 있습니다.
 

2.3. 케라스(Keras) - OneBook(Python & Deep Learning)

모델은 가능한 최소한으로의 제한하여 독립적으로 생성가능 합니다. 또한, 신경층(Neural Layers), 비용함수(Cost Functions), 최적화기(Optimizers), 초기화 스킴(Initialization Schemes), 활성 함수(Activation Functio

sdc-james.gitbook.io

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를 추출할 수 있도록 돕는다.

fully-connected layer

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)

참고 문헌

 

Keras documentation: Dense layer

Dense layer [source] Dense class 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, bi

keras.io

 

반응형
저작자표시 (새창열림)

'🤖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
  1. Kears란?
  2. keras.layers.Dense 레이어란?
  3. Dense 레이어의 옵션들
  4. Dense 레이어 구현
  5. 참고 문헌
'🤖AIML' 카테고리의 다른 글
  • [Keras] keras.layers.Dropout 레이어 이해하기
  • [Keras] keras.layers.Flatten 레이어 이해하기
  • [트렌스포머 모델 이해하기] Self-Attention에서 Q, K, V(Query, Key, Value)의 의미
  • 이진 분류 및 멀티 클래스 분류에서 TP, TN, FP, FN, Recall, Precision, Accuracy 계산하기(Binary Classification & Muti-class Classification)
Researcher Mode
Researcher Mode
Researcher Mode
Codename Cathy
Researcher Mode
전체
오늘
어제
  • 분류 전체보기 (91)
    • 🤖AIML (11)
    • 🗄️Backend (29)
      • SpringBoot (23)
      • [GDSC] SpringBoot 프로젝트 (6)
      • [GDSC] Solution Challenge (0)
    • 🎨Frontend (1)
    • 👷‍♂️DevOps (14)
      • Kubernetes (2)
      • [구글 K8S 스터디 잼] 입문반 (6)
      • [구글 K8S 스터디 잼] 중급반 (5)
      • Cloud(AWS&GCP) (1)
    • 📱Kotlin (22)
      • [GDSC] Kotlin in Action 스터디 (22)
    • 🧩Algorithm (4)
    • 🖥️Languages (5)
      • 👩‍💻Git (1)
      • 🐍Python (2)
      • ☕JAVA (2)
    • 📖 시험 (1)
    • 🎉연말결산 및 잡담 (3)
    • 💻 컴퓨터 문제 (1)

최근 글

hELLO · Designed By 정상우.v4.2.2
Researcher Mode
[Keras] keras.layers.Dense 레이어 이해하기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.