๐Ÿ˜Ž ๊ณต๋ถ€ํ•˜๋Š” ์ง•์ง•์•ŒํŒŒ์นด๋Š” ์ฒ˜์Œ์ด์ง€?

CNN-LSTM ์œผ๋กœ ์‹œ๊ณ„์—ด ๋ถ„์„ํ•˜๊ธฐ ๋ณธ๋ฌธ

๐Ÿ‘ฉ‍๐Ÿ’ป ์ธ๊ณต์ง€๋Šฅ (ML & DL)/Serial Data

CNN-LSTM ์œผ๋กœ ์‹œ๊ณ„์—ด ๋ถ„์„ํ•˜๊ธฐ

์ง•์ง•์•ŒํŒŒ์นด 2022. 11. 4. 13:44
728x90
๋ฐ˜์‘ํ˜•

< ๋ณธ ๋ธ”๋กœ๊ทธ๋Š” 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 ๋ชจ๋ธ์ด ์‚ฌ์šฉ

1D CNN์—์„œ ์ปค๋„์˜ ์›€์ง์ž„์„ 1์ฐจ์ ์œผ๋กœ ์‹œ๊ฐํ™”

 

์‹œ๊ฐ„์˜ ํ๋ฆ„์— ๋”ฐ๋ผ ์ปค๋„์ด ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™

์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ(Time-Series Data)๋ฅผ ๋‹ค๋ฃฐ ๋•Œ์—๋Š” 1D CNN์ด ์ ํ•ฉ

1D CNN์„ ํ™œ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๋ณ€์ˆ˜ ๊ฐ„์˜ ์ง€์—ฝ์ ์ธ ํŠน์ง•์„ ์ถ”์ถœ

 

in_channels  1๊ฐœ,  out_channels  1๊ฐœ,  kernel_size  2๊ฐœ,  stride ๋Š” 1

 

 

๐Ÿฅ• 1D CNN ๋ ˆ์ด์–ด

in_channels 1๊ฐœ, out_channels 1๊ฐœ, kernel_size 2๊ฐœ, stride๋Š” 1๋กœ ์„ค์ •

์ž…๋ ฅ ๊ฐ’์œผ๋กœ ํ™œ์šฉํ•  input ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•˜๊ณ  c์— ์ž…๋ ฅํ•ด ์˜ˆ์ธก๊ฐ’์„ ์‚ฐ์ถœ

https://jalammar.github.io/visual-interactive-guide-basics-neural-networks/

 

 

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

 

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•
Comments