1D CNN
1D CNN은 1차원 데이터를 처리하는 CNN의 한 종류이다. 컴퓨터 비전 작업에서 CNN에 대한 입력은 일반적으로 각 픽셀이 행렬의 값으로 표시되는 2차원 이미지이다. 이와 대조적으로 숫자 데이터는 일반적으로 1차원 값 시퀀스로 표시된다.
일반적으로 CNN은 이미지 처리에서 주로 쓰이며 2D convolution을 사용하지만, 수치나 텍스트 처리에서는 filter가 위아래 한 방향으로만 이동하는 1D Convolution을 사용한다.
1D CNN은 입력 데이터 위에 작은 창을 슬라이딩하고 창과 학습 가능한 필터 세트 사이의 내적을 계산하는 컨볼루션 작업을 입력 데이터에 적용한다. 이 작업의 결과는 피처 맵이며, 이는 비선형 활성화 함수와 풀링 레이어를 통해 전달되어 출력의 차원을 줄인다.
완전 연결 신경망과 같은 기존 신경망은 수치 데이터에 사용할 수 있지만 몇 가지 제한 사항이 있다. 주요 제한 사항 중 하나는 완전히 연결된 신경망에는 고정된 입력 크기가 필요하며, 이는 길이가 다양한 수치 데이터의 경우 문제가 될 수 있다는 것이다. 또한, 완전히 연결된 신경망은 데이터의 로컬 구조를 고려하지 않는다.
반면에 1D CNN은 가변 길이 입력을 처리하고 데이터의 로컬 구조를 캡처할 수 있다. 따라서, 시계열 분석 및 오디오 신호 처리와 같은 작업에 매우 적합하다.
Conv1D layer in Keras
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
)
이 레이어는 출력 텐서를 생성하기 위해 단일 공간 (또는 시간) 차원에 대해 레이어 입력과 컨볼루션되는 컨볼루션 커널을 생성한다. use_bias가 True이면 바이어스 벡터가 생성되어 출력에 추가된다. 마지막으로 활성화가 None이 아니면 출력에도 적용된다.
input_shape = (4, 10, 128)
x = tf.random.normal(input_shape)
y = tf.keras.layers.Conv1D(32, 3, activation='relu',input_shape=input_shape[1:])(x)
print(y.shape)
(4, 8, 32)
https://saturncloud.io/blog/how-to-properly-implement-1d-cnn-for-numerical-data-in-pytorch/
'Learning-driven Methodology > DL (Deep Learning)' 카테고리의 다른 글
[Deep Learning] Attention Mechanism (0) | 2023.12.28 |
---|---|
[Deep Learning] Seq2Seq (Sequence to Sequence) (0) | 2023.12.27 |
[Deep Learning] 방사형 기저 함수 신경망 (Radial Basis Function Network) (0) | 2023.07.17 |
[Deep Learning] Perplexity (0) | 2023.06.27 |
[Deep Learning] 베이지안 하이퍼파라미터 최적화 (Bayesian Hyperparameter Optimization) (0) | 2023.05.26 |