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 연산을 수행하는 레이어이다. 컨볼루션 연산을 모른다면 구글을 참고!
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
)
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
)
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
)
Convolution을 반대로 해주는 것이다. 오토인코더의 디코더 부분, GAN의 Generator, Unet 등에 활용된다.
tf.keras.layers.Conv1DTranspose(
filters, kernel_size, strides=(1, 1), padding='valid', ...
)
tf.keras.layers.Conv2DTranspose(
filters, kernel_size, strides=(1, 1), padding='valid', ...
)
tf.keras.layers.Conv3DTranspose(
filters, kernel_size, strides=(1, 1), padding='valid', ...
)
두개의 차이가 햇갈린다면 아래의 인용구를 참고!
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
tf.keras.layers.MaxPool2D(
pool_size=(2, 2), strides=None, padding='valid'
)
tf.keras.layers.AveragePooling2D(
pool_size=(2, 2), strides=None, padding='valid'
)
tf.keras.layers.GlobalAveragePooling2D()
각 피처맵을 하나로 요약해준다. 이를 통해 Flatten을 대체할 수 있으며, 피처사이즈를 줄여서 오버피팅을 방지한다. 이 레이어는 보통 FC layer를 대체하여 사용됨으로, 이 뒤에는 FC layer를 넣지 않고 Output layer만을 넣어준다. (ResNet 논문 참고)
입력과 출력을 시퀀스 단위로 처리하는 모델.
tf.keras.layers.RNN(
cell, return_sequences=False, return_state=False, go_backwards=False,
)
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,
)
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,
)
tf.keras.layers.Input(
input_shape=None
)
Funtional API 사용시 Input 텐서를 정의하기 위한 레이어
tf.keras.layers.Flatten()
LSTM, CONV에서 나온 피쳐맵을 Dense에 넣기 전 펴주기 위한 레이어
tf.keras.layers.Dropout(
rate
)
특정 비율만큼 셀을 꺼서 훈련이 되지 않도록 하여 오버피팅을 방지하는 레이어
tf.keras.layers.Bidirectional(
layer
)
양방향 LSTM을 만들어주기 위한 것으로, 앞 뒤의 sequence를 참조할 수 있도록 해줌
tf.keras.layers.Concatenate(
axis=-1
)
두 개의 레이어를 결합해준다. 한 개의 shape은 일치해야 결합이 가능함.
tf.keras.layers.Add()
tf.keras.layers.Multiply()
두 레이어 간의 곱샘, 덧샘 등의 연산을 수행할 수 있도록 해줌
tf.keras.layers.Dot(
axes,
)
두 레이어 출력 간의 행렬연산을 수행하도록 해줌.