๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
CNN-LSTM ์ผ๋ก ์๊ณ์ด ๋ถ์ํ๊ธฐ ๋ณธ๋ฌธ
CNN-LSTM ์ผ๋ก ์๊ณ์ด ๋ถ์ํ๊ธฐ
์ง์ง์ํ์นด 2022. 11. 4. 13:44< ๋ณธ ๋ธ๋ก๊ทธ๋ data-newbie ๋์ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํด์ ๊ณต๋ถํ๋ฉฐ ์์ฑํ์์ต๋๋ค :-) >
https://data-newbie.tistory.com/31
๋ชจ๋ธํ๊ฐ์ ์ฑ๋ฅํ๊ฐ _๋ฏธ์์ฑ
๋์์ด ๋์ จ๋ค๋ฉด, ๊ด๊ณ ํ๋ฒ๋ง ๋๋ฌ์ฃผ์ธ์. ๋ธ๋ก๊ทธ ๊ด๋ฆฌ์ ํฐ ํ์ด ๋ฉ๋๋ค ^^ ์ง๋์ ๋น์ง๋ ๋ค์ํ ๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ ์ดํด๋ด -> ๋ชจ๋ธ ํ๊ฐ์ ๋งค๊ฐ๋ณ์ ์ ํ์ ๋ํด ์์๋ณด์ ๋น์ง๋ ํ์ต์ ์
data-newbie.tistory.com
๐ฅ 1D CNN (1 Dimensional Convolution Neural Network)
CNN ๋ชจ๋ธ์ 1D, 2D, 3D๋ก ๋๋๋๋ฐ, ์ผ๋ฐ์ ์ธ CNN์ ๋ณดํต ์ด๋ฏธ์ง ๋ถ๋ฅ์ ์ฌ์ฉ๋๋ 2D๋ฅผ ํต์นญ
D๋ ์ฐจ์์ ๋ปํ๋ dimensional์ ์ฝ์๋ก, ์ธํ ๋ฐ์ดํฐ ํํ์ ๋ฐ๋ผ 1D, 2D, 3D ํํ์ CNN ๋ชจ๋ธ์ด ์ฌ์ฉ
์๊ฐ์ ํ๋ฆ์ ๋ฐ๋ผ ์ปค๋์ด ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋
์๊ณ์ด ๋ฐ์ดํฐ(Time-Series Data)๋ฅผ ๋ค๋ฃฐ ๋์๋ 1D CNN์ด ์ ํฉ
1D CNN์ ํ์ฉํ๊ฒ ๋๋ฉด ๋ณ์ ๊ฐ์ ์ง์ฝ์ ์ธ ํน์ง์ ์ถ์ถ
๐ฅ 1D CNN ๋ ์ด์ด
in_channels 1๊ฐ, out_channels 1๊ฐ, kernel_size 2๊ฐ, stride๋ 1๋ก ์ค์
์ ๋ ฅ ๊ฐ์ผ๋ก ํ์ฉํ input ๋ณ์๋ฅผ ์ ์ํ๊ณ c์ ์ ๋ ฅํด ์์ธก๊ฐ์ ์ฐ์ถ
import torch
from torch import nn
- kernel_size๊ฐ 2์ธ 1D CNN์ ํต๊ณผํ๋ 4๊ฐ์ ๊ฐ์ด ์ฐ์ถ
c = nn.Conv1d(in_channels=1, out_channels=1, kernel_size=2, stride=1)
input = torch.Tensor([[[1,2,3,4,5]]])
output = c(input)
output
- c์ ์ ์ฅ๋ weight์ bias ๊ฐ
- ์ฒซ๋ฒ์งธ๋ก ๋์ค๋ ๊ฐ์ weight ๊ฐ -> kernel_size๊ฐ 2 ์ด๋ฏ๋ก ์ด 2๊ฐ์ weight๊ฐ์ด ์กด์ฌ
- ๋๋ฒ์งธ๋ก ๋์ค๋ ๊ฐ์ bias ๊ฐ -> ํ๋์ 1D CNN ๋ ์ด์ด์ ๋ํด ํ๋์ bias ๊ฐ์ด ์กด์ฌ
for param in c.parameters():
print(param)
- ํด๋น ๊ฐ๋ค์ ๊ฐ๊ฐ w1, w2, b ๋ณ์์ ์ ์ฅ
w_list = []
for param in c.parameters():
w_list.append(param)
w = w_list[0]
b = w_list[1]
w1 = w[0][0][0]
w2 = w[0][0][1]
print(w1)
print(w2)
print(b)
- 1D CNN์ ํต๊ณผํ์ ๋์ ๋์จ output๊ฐ์ ๊ณ์ฐ
CNN12 = w1 * 1 + w2 * 2 + b
CNN23 = w1 * 2 + w2 * 3 + b
CNN34 = w1 * 3 + w2 * 4 + b
CNN45 = w1 * 4 + w2 * 5 + b
print(CNN12)
print(CNN23)
print(CNN34)
print(CNN45)
- output ๊ณผ ๋น๊ต
output = c(input)
output