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

2024. 3. 11. 20:13· 🤖AIML
목차
  1. keras.layers.GlobalAveragePooling1D 레이어란?
  2. GlobalAveragePooling1D 레이어의 옵션들
  3. GlobalAveragePooling1D 레이어 구현
  4. 참고 문헌
반응형

keras.layers.GlobalAveragePooling1D 레이어란?

다른 사람이 만든 AI 모델 코드를 보는데, 마지막에 output을 내놓기 전에 바로 이 GlobalAveragePooling1D를 거치고 있는데 이게 무슨 뜻인지 모르겠어서 찾아보게 되었다. GlobalAveragePooling1D에 대한 설명을 보면, "시계열 데이터에 대한 전역 평균 풀링 작업"이라고 나와있다. 이렇게만 들으면 알기 어렵다. 다시 풀어서 설명하자면 시계열 데이터를 받아서 각 채널별로 평균(즉 전역 평균) 을 계산해 고정된 길이의 출력을 생성하는 역할을 한다. 이 레이어가 있으면 서로 다른 길이의 입력들이 주어져도 Average 값만을 선택함으로써 output를 고정된 길이로 만들 수 있다.

📌참고: pooling이란?
output으로 나온 activation maps이 있을 때, 이를 resizing하여 새로운 layer를 얻는 것을 뜻한다. max값이나 average값을 선택하여 사이즈를 줄이면서도 의미 있는 값을 선택하는 것을 목적으로 한다. 따라서 Global Average Pooling이란 말 그대로 전역평균(global average)를 선택(pooling)하는 것을 의미한다.

Average Pooling의 예시

내가 이 레이어를 본 곳에서는 아래 코드처럼 Dense 레이어에 input을 넣기 전에 배열의 길이를 고정하는 전처리의 느낌으로 사용되었다. Tensorflow 공식 사이트에서 제공하는 해당 레이어를 활용한 실습들에서도 대부분 Dense 레이어 직전에 사용되는 것을 보면, 비슷한 목적으로 사용하는 경우가 많은 것 같다.

output = GlobalAveragePooling1D()(output)
output = Dense(emb_size, activation='softmax', kernel_initializer=glorot_uniform(seed=0))(output)

GlobalAveragePooling1D 레이어의 옵션들

keras.layers.GlobalAveragePooling1D(data_format=None, keepdims=False, **kwargs)
  • data_format: channels_last또는 channels_first의 문자열로, 입력의 차원 순서를 뜻한다. channels_last는 입력이 (batch, steps, features)일 경우에 해당하고 channels_first는 (batch, features, steps) 모양의 입력에 해당한다. 기본값은 Keras 구성 파일에 있는 ~/.keras/keras.json의 image_data_format 값이 되는데, 설정하지 않으면 channels_last 값이 된다.
  • keepdims: 시간적 차원을 유지할지의 여부를 나타내는 boolean 값이다. False(기본값)이면 공간 차원에 대해 텐서의 순위가 감소하고, True이면 시간적 차원은 길이 1로 유지된다. 동작은 tf.reduce_mean 또는 np.mean과 동일하다.

GlobalAveragePooling1D 레이어 구현

해당 레이어는 다음과 같이 input을 넣을 수 있다.

>>> input_shape = (2, 3, 4)
>>> x = tf.random.normal(input_shape)
>>> y = tf.keras.layers.GlobalAveragePooling1D()(x)
>>> print(y.shape)
(2, 4)

참고 문헌

 

Keras documentation: GlobalAveragePooling1D layer

GlobalAveragePooling1D layer [source] GlobalAveragePooling1D class keras.layers.GlobalAveragePooling1D(data_format=None, keepdims=False, **kwargs) Global average pooling operation for temporal data. Arguments data_format: string, either "channels_last" or

keras.io

 

tf.keras.layers.GlobalAveragePooling1D  |  TensorFlow v2.15.0.post1

Global average pooling operation for temporal data.

www.tensorflow.org

 

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

'🤖AIML' 카테고리의 다른 글

파이썬 멀티 프로세싱(multiprocessing)으로 CPU 여러 개 사용한 데이터 전처리 및 feature 추출 가속화  (0) 2024.05.03
Apple M3 Max 칩의 변화 및 M3 Ultra/M3 Extreme 칩에 대한 루머  (1) 2024.03.29
[Keras] keras.layers.Dropout 레이어 이해하기  (0) 2024.02.21
[Keras] keras.layers.Flatten 레이어 이해하기  (0) 2024.02.19
[Keras] keras.layers.Dense 레이어 이해하기  (0) 2024.02.19
  1. keras.layers.GlobalAveragePooling1D 레이어란?
  2. GlobalAveragePooling1D 레이어의 옵션들
  3. GlobalAveragePooling1D 레이어 구현
  4. 참고 문헌
'🤖AIML' 카테고리의 다른 글
  • 파이썬 멀티 프로세싱(multiprocessing)으로 CPU 여러 개 사용한 데이터 전처리 및 feature 추출 가속화
  • Apple M3 Max 칩의 변화 및 M3 Ultra/M3 Extreme 칩에 대한 루머
  • [Keras] keras.layers.Dropout 레이어 이해하기
  • [Keras] keras.layers.Flatten 레이어 이해하기
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.GlobalAveragePooling1D 레이어 이해하기
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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