rnn_layer

RNN Layer๋ž€?

RNN (Recurrent Neural Network) Layer๋Š” ์ˆœํ™˜ ์‹ ๊ฒฝ๋ง ๋ชจ๋ธ ์ค‘ ํ•˜๋‚˜๋กœ, ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ์™€ ์ƒํƒœ ์ •๋ณด๋ฅผ ๋ชจ๋ธ๋งํ•˜๋Š” ๋ฐ์— ์ ํ•ฉํ•œ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. RNN์€ ์ด์ „์— ๊ณ„์‚ฐ๋œ ๊ฐ’์„ ๋‹ค์‹œ ํ˜„์žฌ ๊ณ„์‚ฐ์— ํ™œ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์ „์˜ ์ž…๋ ฅ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ธฐ์–ตํ•˜๊ณ  ์ด๋ฅผ ๋‹ค์Œ ๊ณ„์‚ฐ์— ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ์ž…๋ ฅ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํ˜„์žฌ ๊ณ„์‚ฐ์— ํ™œ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ์™€ ๊ฐ™์ด ์ž…๋ ฅ ๊ฐ„์˜ ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

RNN Layer๋Š” ์‹œ๊ฐ„ ์ถ•์œผ๋กœ ํŽผ์ณ์ง„ ํ˜•ํƒœ์˜ ๋„คํŠธ์›Œํฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์‹œ๊ฐ„ t์—์„œ์˜ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„ ์ถœ๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋™์ž‘์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. RNN Layer์˜ ๊ฐ ๋‰ด๋Ÿฐ์€ ํ˜„์žฌ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์™€ ์ด์ „ ์‹œ์ ์˜ ์ถœ๋ ฅ๊ฐ’์„ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„ ํ˜„์žฌ ์‹œ์ ์˜ ์ถœ๋ ฅ๊ฐ’์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์ˆ˜์‹์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ht=fh(Wxhxt+Whhhtโˆ’1+bh)h_t = f_h(W_{xh} x_t + W_{hh} h_{t-1} + b_h)

์—ฌ๊ธฐ์„œ xtx_t๋Š” ์‹œ๊ฐ„ t์—์„œ์˜ ์ž…๋ ฅ ๋ฒกํ„ฐ, hth_t๋Š” ์‹œ๊ฐ„ t์—์„œ์˜ ์ถœ๋ ฅ ๋ฒกํ„ฐ, WxhW_{xh}๋Š” ์ž…๋ ฅ ๊ฐ€์ค‘์น˜ ํ–‰๋ ฌ, WhhW_{hh}๋Š” ์ด์ „ ์‹œ์ ์˜ ์ถœ๋ ฅ๊ฐ’๊ณผ ํ˜„์žฌ ์ž…๋ ฅ๊ฐ’์„ ์—ฐ๊ฒฐํ•œ ๊ฐ€์ค‘์น˜ ํ–‰๋ ฌ, bhb_h๋Š” ํŽธํ–ฅ ๋ฒกํ„ฐ, fhf_h๋Š” ํ™œ์„ฑํ™” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

RNN Layer๋Š” ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜๊ฐ€ ์žˆ์œผ๋ฉฐ, ๋Œ€ํ‘œ์ ์œผ๋กœ Simple RNN, LSTM(Long Short-Term Memory), GRU(Gated Recurrent Unit) ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋“ค์€ ๊ฐ๊ฐ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ ์‚ฌ์ด์˜ ์ •๋ณด ํ๋ฆ„์„ ๋‹ค๋ฅด๊ฒŒ ์กฐ์ ˆํ•˜์—ฌ, ๋‹ค์–‘ํ•œ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋ชจ๋ธ๋ง์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.


increment_layer

static void increment_layer(layer *l, int steps)
{
    int num = l->outputs*l->batch*steps;
    l->output += num;
    l->delta += num;
    l->x += num;
    l->x_norm += num;
}

ํ•จ์ˆ˜ ์ด๋ฆ„: increment_layer

์ž…๋ ฅ:

  • layer *l

  • int steps

๋™์ž‘:

  • RNN ๋ ˆ์ด์–ด์—์„œ timestep ๋‹จ์œ„๋กœ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ, ์ด์ „ timestep์—์„œ ์ถœ๋ ฅํ•œ ๊ฒฐ๊ณผ๊ฐ’์„ ํ˜„์žฌ timestep์—์„œ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด, ํ˜„์žฌ timestep์— ํ•ด๋‹นํ•˜๋Š” ๋ ˆ์ด์–ด ํฌ์ธํ„ฐ(l)๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐ์ดํ„ฐ ํฌ์ธํ„ฐ(output, delta, x, x_norm)๋ฅผ steps(ํ˜„์žฌ timestep๊ณผ ์ด์ „ timestep ๊ฐ„์˜ ์ฐจ์ด)๋งŒํผ ์ฆ๊ฐ€์‹œ์ผœ์ฃผ๋Š” ํ•จ์ˆ˜์ด๋‹ค.

์„ค๋ช…:

  • RNN ๋ ˆ์ด์–ด๋Š” ์‹œํ€€์Šค ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ, ์ด์ „ timestep์—์„œ ์ถœ๋ ฅํ•œ ๊ฒฐ๊ณผ๊ฐ’์„ ํ˜„์žฌ timestep์—์„œ ๋‹ค์‹œ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

  • ์ด ๋•Œ, ํ˜„์žฌ timestep์˜ ๋ ˆ์ด์–ด ํฌ์ธํ„ฐ๊ฐ€ ์ด์ „ timestep์—์„œ์˜ ๋ ˆ์ด์–ด ํฌ์ธํ„ฐ์™€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๊ฐ€ ๋‹ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์—, ํ˜„์žฌ timestep์—์„œ์˜ ๋ฐ์ดํ„ฐ ํฌ์ธํ„ฐ๋ฅผ ์ด์ „ timestep์—์„œ์˜ ๋ฐ์ดํ„ฐ ํฌ์ธํ„ฐ์—์„œ ์ ์ ˆํžˆ ์ด๋™์‹œ์ผœ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

  • ์ด ํ•จ์ˆ˜๋Š” ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์ž…๋ ฅ์œผ๋กœ ํ˜„์žฌ timestep์˜ ๋ ˆ์ด์–ด ํฌ์ธํ„ฐ(l)์™€ ์ด์ „ timestep๊ณผ์˜ ์ฐจ์ด(steps)๋ฅผ ๋ฐ›์•„์„œ, l์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐ์ดํ„ฐ ํฌ์ธํ„ฐ(output, delta, x, x_norm)๋ฅผ steps๋งŒํผ ์ฆ๊ฐ€์‹œ์ผœ์ค€๋‹ค.

  • ์ด ๋•Œ, ๋ฐ์ดํ„ฐ ํฌ์ธํ„ฐ์˜ ์ฆ๊ฐ€๋Ÿ‰์€ timestep ๊ฐ„์˜ ์ฐจ์ด์— ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ(output, delta, x, x_norm)์™€ ๋ฐฐ์น˜ ํฌ๊ธฐ(batch)๋ฅผ ๊ณฑํ•œ ๊ฐ’์ด๋‹ค.

forward_rnn_layer

ํ•จ์ˆ˜ ์ด๋ฆ„: forward_rnn_layer

์ž…๋ ฅ:

  • layer l (ํ˜„์žฌ RNN ๋ ˆ์ด์–ด)

  • network net (๋„คํŠธ์›Œํฌ)

๋™์ž‘:

  • ํ˜„์žฌ RNN ๋ ˆ์ด์–ด๋ฅผ ํฌ์›Œ๋“œ ํŒจ์Šคํ•˜๋Š” ํ•จ์ˆ˜๋กœ, RNN ๋ ˆ์ด์–ด์˜ ์ž…๋ ฅ, ์€๋‹‰ ์ƒํƒœ, ์ถœ๋ ฅ์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

  • ์ž…๋ ฅ, ์€๋‹‰ ์ƒํƒœ, ์ถœ๋ ฅ ๊ณ„์‚ฐ์„ ์œ„ํ•ด connected ๋ ˆ์ด์–ด๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • RNN ๋ ˆ์ด์–ด์˜ ์ž…๋ ฅ์€ ํ˜„์žฌ ๋ ˆ์ด์–ด ์ด์ „์˜ ์ถœ๋ ฅ๊ณผ ํ˜„์žฌ ์‹œ์ ์˜ ์ž…๋ ฅ์„ ๋”ํ•œ ๊ฐ’์ž…๋‹ˆ๋‹ค.

  • ์ด์ „์˜ ์ถœ๋ ฅ์„ ๋”ํ•ด์ฃผ๋Š” ์ด์œ ๋Š” RNN์ด ์ด์ „์˜ ์ •๋ณด๋ฅผ ๊ธฐ์–ตํ•˜๊ธฐ ์œ„ํ•ด์„œ์ž…๋‹ˆ๋‹ค.

  • ๋˜ํ•œ, ํ˜„์žฌ ์‹œ์ ์˜ ์ž…๋ ฅ๊ณผ ์€๋‹‰ ์ƒํƒœ๋ฅผ ๋”ํ•ด์ฃผ๋Š” ์ด์œ ๋Š” ํ˜„์žฌ ์ž…๋ ฅ๊ณผ ์ด์ „ ์ƒํƒœ๊ฐ€ ๋‹ค์Œ ์ƒํƒœ์˜ ์ถœ๋ ฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

  • ๋ ˆ์ด์–ด์˜ ์ž…๋ ฅ, ์ถœ๋ ฅ, ์€๋‹‰ ์ƒํƒœ, ๋ธํƒ€ ๊ฐ’์ด ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค.

์„ค๋ช…:

  • ์ด ํ•จ์ˆ˜๋Š” RNN ๋ ˆ์ด์–ด๋ฅผ ํฌ์›Œ๋“œ ํŒจ์Šคํ•˜๋Š” ํ•จ์ˆ˜๋กœ, ์ด์ „ ๋ ˆ์ด์–ด์—์„œ ์ถœ๋ ฅ๋œ ๊ฐ’์„ ํ˜„์žฌ ๋ ˆ์ด์–ด์˜ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์ด์ „ ๋ ˆ์ด์–ด์—์„œ ์ถœ๋ ฅ๋œ ๊ฐ’๊ณผ ํ˜„์žฌ ์ž…๋ ฅ ๊ฐ’์„ ๋”ํ•œ ๊ฐ’์„ RNN ๋ ˆ์ด์–ด์˜ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ, ์€๋‹‰ ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์ถœ๋ ฅ์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

  • ์ด์ „ ์ƒํƒœ์™€ ํ˜„์žฌ ์ž…๋ ฅ์ด ๋‹ค์Œ ์ƒํƒœ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ฏ€๋กœ, ์ด์ „ ์ƒํƒœ์™€ ํ˜„์žฌ ์ž…๋ ฅ์„ ๋”ํ•ด์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ์ด ํ•จ์ˆ˜๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ํ•™์Šต ์ค‘์ธ์ง€ ์•„๋‹Œ์ง€์— ๋”ฐ๋ผ ๋„คํŠธ์›Œํฌ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

  • ๋˜ํ•œ, RNN ๋ ˆ์ด์–ด๋Š” ์—ฐ์†๋œ ์Šคํ…์„ ๊ณ„์‚ฐํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ์ž…๋ ฅ, ์€๋‹‰ ์ƒํƒœ, ์ถœ๋ ฅ ๋ ˆ์ด์–ด๋ฅผ ์Šคํ… ์ˆ˜๋งŒํผ ๋ฐ˜๋ณต์ ์œผ๋กœ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

backward_rnn_layer

ํ•จ์ˆ˜ ์ด๋ฆ„: backward_rnn_layer

์ž…๋ ฅ:

  • layer l: ์—ญ์ „ํŒŒ๋ฅผ ์ˆ˜ํ–‰ํ•  RNN ๋ ˆ์ด์–ด

  • network net: RNN ๋ ˆ์ด์–ด๋ฅผ ํฌํ•จํ•˜๋Š” ์‹ ๊ฒฝ๋ง

๋™์ž‘:

  • RNN ๋ ˆ์ด์–ด์˜ ์—ญ์ „ํŒŒ(backpropagation)๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. RNN ๋ ˆ์ด์–ด๋Š” ์‹œ๊ฐ„ ์Šคํ…(time step)์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์—ญ์ „ํŒŒ๋Š” ์‹œ๊ฐ„์˜ ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœ(step-by-step) ์ˆ˜ํ–‰๋œ๋‹ค.

์„ค๋ช…:

  • ๋จผ์ €, ์ž…๋ ฅ ๋ ˆ์ด์–ด(input_layer), ์ž๊ธฐ ๋ฐ˜๋ณต ๋ ˆ์ด์–ด(self_layer), ์ถœ๋ ฅ ๋ ˆ์ด์–ด(output_layer)๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.

  • ๊ฐ ๋ ˆ์ด์–ด์˜ ์ถœ๋ ฅ(delta)์„ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

  • RNN ๋ ˆ์ด์–ด๊ฐ€ ํ•™์Šต ๋ชจ๋“œ(train mode)์ผ ๊ฒฝ์šฐ, ์ƒํƒœ(state)๋ฅผ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

  • ๋ชจ๋“  ์‹œ๊ฐ„ ์Šคํ…์— ๋Œ€ํ•ด ๋ฐ˜๋ณตํ•˜๋ฉฐ, ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค:

    • input_layer์— ํ˜„์žฌ ์ž…๋ ฅ(net.input)์„ ๋„ฃ๊ณ , forward_connected_layer()๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ input_layer์˜ ์ถœ๋ ฅ(output)์„ ๊ณ„์‚ฐํ•œ๋‹ค.

    • self_layer์— ์ด์ „ ์‹œ๊ฐ„ ์Šคํ…์˜ ์ƒํƒœ(l.state)๋ฅผ ๋„ฃ๊ณ , forward_connected_layer()๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ self_layer์˜ ์ถœ๋ ฅ(output)์„ ๊ณ„์‚ฐํ•œ๋‹ค.

    • RNN ๋ ˆ์ด์–ด์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค. ์ด์ „ ์ƒํƒœ(old_state)๋ฅผ ์œ ์ง€ํ•œ ํ›„, input_layer์™€ self_layer์˜ ์ถœ๋ ฅ์„ ๋”ํ•œ ๊ฐ’์„ ํ˜„์žฌ ์ƒํƒœ(l.state)๋กœ ๊ฐฑ์‹ ํ•œ๋‹ค.

    • output_layer์— ํ˜„์žฌ ์ƒํƒœ(l.state)๋ฅผ ๋„ฃ๊ณ , forward_connected_layer()๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ถœ๋ ฅ(output)์„ ๊ณ„์‚ฐํ•œ๋‹ค.

    • input_layer, self_layer, output_layer์˜ ์ถœ๋ ฅ(delta)๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.

    • net.input์„ ๋‹ค์Œ ์‹œ๊ฐ„ ์Šคํ…์˜ ์ž…๋ ฅ์œผ๋กœ ์ด๋™ํ•œ๋‹ค.

    • input_layer, self_layer, output_layer๋ฅผ ํ•œ ์‹œ๊ฐ„ ์Šคํ… ์•ž์œผ๋กœ ์ด๋™์‹œํ‚จ๋‹ค.

  • ๋ชจ๋“  ์‹œ๊ฐ„ ์Šคํ…์— ๋Œ€ํ•ด ์—ญ์ „ํŒŒ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค:

    • output_layer์˜ ์—ญ์ „ํŒŒ(delta)๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.

    • self_layer์˜ ์—ญ์ „ํŒŒ(delta)๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.

    • input_layer์˜ ์—ญ์ „ํŒŒ(delta)๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.

    • input_layer, self_layer, output_layer๋ฅผ ํ•œ ์‹œ๊ฐ„ ์Šคํ… ๋’ค๋กœ ์ด๋™์‹œํ‚จ๋‹ค.

update_rnn_layer

ํ•จ์ˆ˜ ์ด๋ฆ„: update_rnn_layer

์ž…๋ ฅ:

  • layer l (RNN ๋ ˆ์ด์–ด)

  • update_args a (๊ฐ€์ค‘์น˜ ์—…๋ฐ์ดํŠธ์— ํ•„์š”ํ•œ ์ธ์ž๋“ค)

๋™์ž‘:

  • RNN ๋ ˆ์ด์–ด์˜ ์ž…๋ ฅ ๋ ˆ์ด์–ด, ์ž๊ธฐ ์ƒํƒœ ๋ ˆ์ด์–ด, ์ถœ๋ ฅ ๋ ˆ์ด์–ด ๊ฐ๊ฐ์— ๋Œ€ํ•ด update_connected_layer ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๊ฐ€์ค‘์น˜๋ฅผ ์—…๋ฐ์ดํŠธํ•จ.

์„ค๋ช…:

  • ์ด ํ•จ์ˆ˜๋Š” RNN ๋ ˆ์ด์–ด์˜ ๊ฐ€์ค‘์น˜๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•ด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

  • RNN์€ ์ž…๋ ฅ ์‹œํ€€์Šค๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ, ์‹œํ€€์Šค ๋‚ด ์ด์ „ ์‹œ์ ์—์„œ์˜ ์ž๊ธฐ ์ƒํƒœ๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ์ž…๋ ฅ ๋ ˆ์ด์–ด, ์ž๊ธฐ ์ƒํƒœ ๋ ˆ์ด์–ด, ์ถœ๋ ฅ ๋ ˆ์ด์–ด ๊ฐ๊ฐ์— ๋Œ€ํ•ด ๊ฐ€์ค‘์น˜๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ด๋ฅผ ์œ„ํ•ด ์ž…๋ ฅ ๋ ˆ์ด์–ด, ์ž๊ธฐ ์ƒํƒœ ๋ ˆ์ด์–ด, ์ถœ๋ ฅ ๋ ˆ์ด์–ด์— ๋Œ€ํ•ด update_connected_layer ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

make_rnn_layer

ํ•จ์ˆ˜ ์ด๋ฆ„: make_rnn_layer

์ž…๋ ฅ:

  • batch: intํ˜•, ๋ฐฐ์น˜ ํฌ๊ธฐ

  • inputs: intํ˜•, ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ์ฐจ์› ์ˆ˜

  • outputs: intํ˜•, ์ถœ๋ ฅ ๋ฐ์ดํ„ฐ์˜ ์ฐจ์› ์ˆ˜

  • steps: intํ˜•, ์ˆœํ™˜ํ•˜๋Š” ๋‹จ๊ณ„ ์ˆ˜

  • activation: ACTIVATION ์—ด๊ฑฐํ˜•, ํ™œ์„ฑํ™” ํ•จ์ˆ˜

  • batch_normalize: intํ˜•, ๋ฐฐ์น˜ ์ •๊ทœํ™” ์‚ฌ์šฉ ์—ฌ๋ถ€ (1: ์‚ฌ์šฉ, 0: ๋ฏธ์‚ฌ์šฉ)

  • adam: intํ˜•, Adam ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ ์—ฌ๋ถ€ (1: ์‚ฌ์šฉ, 0: ๋ฏธ์‚ฌ์šฉ)

๋™์ž‘:

  • ์ž…๋ ฅ๊ฐ’์„ ๋ฐ”ํƒ•์œผ๋กœ RNN ๋ ˆ์ด์–ด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

  • ์ž…๋ ฅ๊ฐ’์œผ๋กœ๋ถ€ํ„ฐ ์—ฐ๊ฒฐ๋œ ๋ ˆ์ด์–ด๋“ค์„ ์ƒ์„ฑํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

  • ์ƒ์„ฑ๋œ ๋ ˆ์ด์–ด๋“ค ๊ฐ„์— ์ƒํ˜ธ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•œ๋‹ค.

  • ์ƒ์„ฑ๋œ RNN ๋ ˆ์ด์–ด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์„ค๋ช…:

  • ์ž…๋ ฅ๊ฐ’์œผ๋กœ๋ถ€ํ„ฐ RNN ๋ ˆ์ด์–ด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

  • RNN ๋ ˆ์ด์–ด๋Š” ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์„œ ์ˆœํ™˜ ์‹ ๊ฒฝ๋ง ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

  • ์ด ํ•จ์ˆ˜๋Š” ์ž…๋ ฅ๊ฐ’์„ ๋ฐ”ํƒ•์œผ๋กœ ์—ฐ๊ฒฐ๋œ ์ž…๋ ฅ ๋ ˆ์ด์–ด, ์ž๊ธฐ ์—ฐ๊ฒฐ ๋ ˆ์ด์–ด, ์ถœ๋ ฅ ๋ ˆ์ด์–ด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

  • ์ด ํ•จ์ˆ˜๋Š” ์ƒ์„ฑ๋œ ๋ ˆ์ด์–ด๋“ค ๊ฐ„์— ์ƒํ˜ธ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•œ๋‹ค.

  • ์ด ํ•จ์ˆ˜๋Š” ์ƒ์„ฑ๋œ RNN ๋ ˆ์ด์–ด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

Last updated

Was this helpful?