[파이토치] 파이토치로 Convolution 이해하기, torch.nn/nn.Conv1d/nn.Conv2d
torch.nn
torch.nn은 PyTorch의 핵심 모듈 중 하나로, 신경망 모델을 정의하고 구성하기 위한 다양한 클래스와 함수를 제공
import torch.nn as nn
nn.Conv1d
파이토치에서 1차원 컨볼루션 레이어를 정의하는 클래스
1차원 컨볼루션은 입력 데이터의 한 방향(주로 시계열 데이터에서는 시간 축)으로 컨볼루션 연산을 수행
2차원 컨볼루션이 가로, 세로로 모두 이동하면서 계산되는 것과 다르게 1차원 컨볼루션 연산은 가로로만 이동
nn.Conv1d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros')
- in_channels: 입력 데이터의 채널 개수
- out_channels: 출력 데이터의 채널 개수, 곧 필터의 개수
- kernel_size: 컨볼루션 필터(커널)의 크기
- stride: 컨볼루션 필터의 이동 간격
- padding: 입력 데이터에 대해 가상의 패딩을 추가
- dilation: 컨볼루션 필터 내의 값 사이의 간격
- groups: 입력 데이터와 출력 데이터의 채널을 그룹화하여 연산
- bias: 편향(bias) 사용 여부를 결정하는 불리언 값
예제 코드
import torch
import torch.nn as nn
# 입력 데이터의 크기: (배치 크기, 채널, 시퀀스 길이)
input_size = (16, 3, 100)
# 1차원 컨볼루션 레이어 정의
conv1d = nn.Conv1d(in_channels=3, out_channels=16, kernel_size=3, stride=1, padding=1)
# 입력 데이터 생성
input_data = torch.randn(input_size)
# 컨볼루션 연산 수행
output = conv1d(input_data)
# 출력 데이터의 크기: (배치 크기, 출력 채널, 출력 시퀀스 길이)
print("Output size:", output.size())
Output size: torch.Size([16, 16, 100])
1차원 input은 [Batch size, Feature dimension(in_channels), time step(시퀀스 길이)]
time step마다 feature dimension이 존재하는 2차원 배열이 들어옴
커널은 시간 축에만 적용 !! (가로 방향으로만)
커널은 out_channels만큼 생성
최종 output은 [Batch size, Feature dimension(out_channels), kernel로 변경된 Time_step]
nn.Conv2d
파이토치(PyTorch)에서 제공하는 2D 컨볼루션(Convolution) 레이어 클래스
이미지나 2D 데이터의 특징 추출에 주로 사용
nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True)
예제 코드
import torch
import torch.nn as nn
# 입력 데이터의 크기: (배치 크기, 채널, 높이, 너비)
input_size = (64, 3, 32, 32)
# Conv2d 레이어 정의
conv = nn.Conv2d(in_channels=3, out_channels=64, kernel_size=3, stride=1, padding=1)
# 입력 데이터 생성
input_data = torch.randn(input_size)
# 컨볼루션 연산 수행
output = conv(input_data)
# 출력 데이터의 크기 출력
print("Output size:", output.size())
Output size: torch.Size([64, 64, 32, 32])
2차원 input은 [Batch size, Feature dimension(in_channels), height, width]
최종 output은 [Batch size, Feature dimension(out_channels), height , width]
References
https://sanghyu.tistory.com/24
[PyTorch] 시계열 데이터를 위한 1D convolution과 1x1 convolution
오늘은 시계열 데이터처리에 많이 사용되는 1D convolution이 PyTorch에 어떻게 구현되어 있는지와 어떤 파라미터가 존재하는지 차원은 어떻게 계산하는 지를 정리해 보려고 한다. 자꾸 까먹는 나 자
sanghyu.tistory.com
https://deep-learning-basics.tistory.com/21
2D convolution (Conv2d) 과정의 이해
* * * RGB 3개 채널을 가진 입력 컬러 사진이 있을 때, 입력의 크기를 3x7x7 이라고 하자. (3은 채널 개수) 이때 필터 (커널) 의 크기가 3x5x5 이면 필터 종류 2가지를 통과했을 때 output feature map 이 나오
deep-learning-basics.tistory.com