반응형
keras.layers.GlobalAveragePooling1D 레이어란?
다른 사람이 만든 AI 모델 코드를 보는데, 마지막에 output을 내놓기 전에 바로 이 GlobalAveragePooling1D
를 거치고 있는데 이게 무슨 뜻인지 모르겠어서 찾아보게 되었다. GlobalAveragePooling1D
에 대한 설명을 보면, "시계열 데이터에 대한 전역 평균 풀링 작업"이라고 나와있다. 이렇게만 들으면 알기 어렵다. 다시 풀어서 설명하자면 시계열 데이터를 받아서 각 채널별로 평균(즉 전역 평균) 을 계산해 고정된 길이의 출력을 생성하는 역할을 한다. 이 레이어가 있으면 서로 다른 길이의 입력들이 주어져도 Average 값만을 선택함으로써 output를 고정된 길이로 만들 수 있다.
📌참고: pooling이란?
output으로 나온 activation maps이 있을 때, 이를 resizing하여 새로운 layer를 얻는 것을 뜻한다. max값이나 average값을 선택하여 사이즈를 줄이면서도 의미 있는 값을 선택하는 것을 목적으로 한다. 따라서 Global Average Pooling이란 말 그대로 전역평균(global 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)
참고 문헌
반응형
'🤖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 |