ch4 - Basic Keras Layers

고준서의 기술블로그·2022년 7월 1일
0

KerasBasic

목록 보기
3/11
post-thumbnail

Linear Based Layers

Dense Layer (Fully Connected Layer)

tf.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, **kwargs
)

단순한 Linear Layer로 y = wx + b 의 단순 연산을 수행

Convolution Based Layers

Convolution 연산을 수행하는 레이어이다. 컨볼루션 연산을 모른다면 구글을 참고!

1. 1D Convolution Layer

tf.keras.layers.Conv1D(
    filters, kernel_size, strides=1, padding='valid',
    data_format='channels_last', dilation_rate=1, groups=1,
    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, **kwargs
)

2. 2D Convolution Layer

tf.keras.layers.Conv2D(
    filters, kernel_size, strides=(1, 1), padding='valid',
    data_format=None, dilation_rate=(1, 1), groups=1, 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, **kwargs
)

3. 3D Convolution Layer

tf.keras.layers.Conv3D(
    filters, kernel_size, strides=(1, 1, 1), padding='valid',
    data_format=None, dilation_rate=(1, 1, 1), groups=1, 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, **kwargs
)

4. ConvTranspose (UpConv, DeConv)

Convolution을 반대로 해주는 것이다. 오토인코더의 디코더 부분, GAN의 Generator, Unet 등에 활용된다.

1. Upconv 1D

tf.keras.layers.Conv1DTranspose(
    filters, kernel_size, strides=(1, 1), padding='valid', ...
)

2. Upconv 2D

tf.keras.layers.Conv2DTranspose(
    filters, kernel_size, strides=(1, 1), padding='valid', ...
)

3. Upconv 3D

tf.keras.layers.Conv3DTranspose(
    filters, kernel_size, strides=(1, 1), padding='valid', ...
)

Upsampling VS ConvTranspose

두개의 차이가 햇갈린다면 아래의 인용구를 참고!

UpSampling2D is just a simple scaling up of the image by using nearest neighbour or bilinear upsampling, so nothing smart. Advantage is it's cheap. Conv2DTranspose is a convolution operation whose kernel is learnt (just like normal conv2d operation) while training your model.
= Upsampling은 단순히 스케일 업해서 만든걸로 파라미터 X / ConvTranspose는 실제 역-컨볼루션 연산으로 파라미터 O


Pooling Layers

1. Maxpooling (1D ~ 3D)

tf.keras.layers.MaxPool2D(
    pool_size=(2, 2), strides=None, padding='valid'
)

2. Avgpooling (1D ~ 3D)

tf.keras.layers.AveragePooling2D(
    pool_size=(2, 2), strides=None, padding='valid'
)

3. GlobalAveragePooling (= Flatten 대신 활용하는 레이어)

tf.keras.layers.GlobalAveragePooling2D()

각 피처맵을 하나로 요약해준다. 이를 통해 Flatten을 대체할 수 있으며, 피처사이즈를 줄여서 오버피팅을 방지한다. 이 레이어는 보통 FC layer를 대체하여 사용됨으로, 이 뒤에는 FC layer를 넣지 않고 Output layer만을 넣어준다. (ResNet 논문 참고)


Recurrent Neural Net Based Layers

입력과 출력을 시퀀스 단위로 처리하는 모델.

1. RNN

tf.keras.layers.RNN(
    cell, return_sequences=False, return_state=False, go_backwards=False,
)

2. GRU

tf.keras.layers.GRU(
    units, activation='tanh', recurrent_activation='sigmoid',
    use_bias=True, dropout=0.0, recurrent_dropout=0.0, return_sequences=False, return_state=False,
    go_backwards=False,
)

3. LSTM

tf.keras.layers.LSTM(
    units, activation='tanh', recurrent_activation='sigmoid',
    use_bias=True, dropout=0.0, recurrent_dropout=0.0, return_sequences=False, return_state=False,
    go_backwards=False,
)

Layers etc.

1. Input Layer

tf.keras.layers.Input(
    input_shape=None
)

Funtional API 사용시 Input 텐서를 정의하기 위한 레이어

2. Flatten

tf.keras.layers.Flatten()

LSTM, CONV에서 나온 피쳐맵을 Dense에 넣기 전 펴주기 위한 레이어

3. Dropout

tf.keras.layers.Dropout(
    rate
)

특정 비율만큼 셀을 꺼서 훈련이 되지 않도록 하여 오버피팅을 방지하는 레이어

4. Bidirectional

tf.keras.layers.Bidirectional(
    layer
)

양방향 LSTM을 만들어주기 위한 것으로, 앞 뒤의 sequence를 참조할 수 있도록 해줌

5. Concatenate

tf.keras.layers.Concatenate(
    axis=-1
)

두 개의 레이어를 결합해준다. 한 개의 shape은 일치해야 결합이 가능함.

6. Add, Multiply

tf.keras.layers.Add()
tf.keras.layers.Multiply()

두 레이어 간의 곱샘, 덧샘 등의 연산을 수행할 수 있도록 해줌

7. Dot

tf.keras.layers.Dot(
    axes,
)

두 레이어 출력 간의 행렬연산을 수행하도록 해줌.

0개의 댓글