conv1d 간단한 정리

  • 이하 글은 link1, link2를 정리하여 작성

1. 1D CNN 용도

  • 1차원 sequential data에 적용
    • eg. NLP에서 한 문장을 나타낼 때, row: voc, col: embedding feature; 로 vectorize. n개 단어에 1d conv 적용
    • 즉, filter size = (n, embedding_dim)
  • simple pattern capture -> higher layers에서 해당 feature 활용
  • sensor data의 time seq, audio signal 등 고정된 길이의 주기(fixed length period)를 가진 데이터에 사용
  • order가 중요하지 않은 NLP

2. 1D vs 2D CNN

  • feature detector(filter, convolutional kernel)가 어떻게 움직이느냐에 따라 달라짐
  • input data의 dim이 다름
  • eg.
    • 1d filter: (height, n <- input data embedding_dim(fixed)). filter size에서 지정할 수 있는 것은 height.
      • + filter는 수직vertically으로만 움직임
      • NLP의 경우, height는 몇 개 단어를 고려할지 결정.
    • 2d filter: (height, width)
      • + filter는 수직vertically 수평horizontally으로 움직임
  • 1d conv 그림

3. 1d conv in NLP

  • input seq_len이 너무 길 때 일종의 sequence down sampling (참고)
  • pytorch에서 conv1d를 NLP활용
    1
    2
    3
    m = nn.Conv1d(in-channels=128, out_channels=32, kernel_size=2)
    input = Variable(torch.randn(10, 128, 5)) # 10: batch_size, 128: embedding_dim, 5 = seq_len
    feature_maps = m(input) # feature_maps size = [10, 32, 4=5-2+1] (bs, out_channels, out_dim)
< !-- add by yurixu 替换Google的jquery并且添加判断逻辑 -->