ArgumentIndexError: tensorflow์ LSTM์ ์ฌ์ฉํ ๋ ์ฃผ์ ๊น๊ฒ ๋ณด์์ผ ํ Parameter, return_sequences
๐ค Problem
tensorflow์์ ์ ๊ณตํ๋ LSTM์ ์ฌ์ฉ์ ํ๋ฉด์ ๋ง์ฃผํ๋ ์๋ฌ ArgumentIndexError์ ๋ํด ์ ๋ฆฌ๋ฅผ ํด๋ณด๊ณ ์ ํฉ๋๋ค.
์๊ณ์ด ๋ฐ์ดํฐ๋ฅผ ํ์ตํ๋ ค๋ ์๋์ ๊ณผ์ ์์ ์๋ฌ๊ฐ ๋ฐ์ํ์ผ๋ฉฐ, ์๋ฌ์ ์์ธํ ๋ด์ฉ์ Incompatible shapes: [32,4] vs. [32,20,4] ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ , ์๋ฌ๊ฐ ๋ฌ์๋ ๋ชจ๋ธ์ ์ฝ๋๋ ์๋์ ๊ฐ์ต๋๋ค.
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.LSTM(units=64,
input_shape=train_x.shape[-2:],
dropout=0.1,
recurrent_dropout=0.1,
activation='tanh',
return_sequences=True))
model.add(tf.keras.layers.BatchNormalization())
model.add(tf.keras.layers.LSTM(units=32,
dropout=0.1,
recurrent_dropout=0.1,
activation='tanh'))
model.add(tf.keras.layers.BatchNormalization())
model.add(tf.keras.layers.Dense(10))
model.add(tf.keras.layers.Dense(4))
๐ Solution
Incompatible shapes: [32,4] vs. [32,20,4] ์ด ๋ฌธ์ ๊ฐ ์ผ์ด๋ฌ๋ ์ด์ ๋ ๋ชจ๋ธ์ด ํ์ตํ๋ ๊ณผ์ ์์ ๊ธฐ์กด์ ์๋ํ target์ shape๊ฐ ํ์์ ํด๋นํ๊ณ , 2๋ฒ์งธ LSTM์์ ์๋ํ ๋ฐ์ ๋ค๋ฅด๊ฒ output์ด ๋์๊ธฐ ๋๋ฌธ์
๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ 1๋ฒ์งธ LSTM๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก recurrent_sequences๋ฅผ True๋ก ๋ฐ๊ฟ์ฃผ์ด์ผ ํฉ๋๋ค.
์ด ํ๋ผ๋ฏธํฐ๊ฐ ์๋ฏธํ๋ ๋ฐ๋ LSTM์ด ๊ธฐ๋ฐ์ด ๋๋ RNN์ ๊ตฌ์กฐ๋ฅผ ์ดํด๋ณด๋ฉด ์ดํด๊ฐ ๋ ์ ์์ต๋๋ค. return_squences๊ฐ default๋ก False์ผ ๊ฒฝ์ฐ, ๋ง์ง๋ง์ ๋ชจ๋ input๊ณผ ๋ชจ๋ state์ ํด๋นํ๋ ์์ถ๊ฐ๊ณผ ์ ์ฌํ ๋ง์ง๋ง output๋ง์ LSTM Layer์ output์ผ๋ก ๋ค์ Layer๋ก ๋ณด๋ด๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์๋ํ LSTM์ output์ด [32, 20, 4]๊ฐ ๋์ค์ง ์์๋ ์ด์ ๋ ํ์์คํ
์ ๋ฐ๋ฅธ output์ ๋ด๋์ง ์๊ณ , ๋จํธ์ ์ธ ํ๋์ output์ ๋ด๋์๊ธฐ ๋๋ฌธ์
๋๋ค.
return_squences๊ฐ False์ผ ๋, ์๋ ๊ทธ๋ฆผ์ ๋นจ๊ฐ ๋ฐ์ค์ ํด๋นํฉ๋๋ค.

๊ทธ๋์ return_sequences๊ฐ True์ผ ๊ฒฝ์ฐ์ ํ์ ์คํ
์ ๋ฐ๋ผ output์ ๋ด๋์ผ๋ฉฐ, ์๋์ ๊ทธ๋ฆผ์์ ๋นจ๊ฐ ๋ฐ์ค๊ฐ LSTM์ output์ ํด๋น๋ฉ๋๋ค.

์ฌ์ค ์ด๋ฌํ ์๋ฌ๊ฐ ๊ฐ๋จํ ์๋ฌ๋ผ ๋ณผ ์ ์์์ผ๋, ์ ๋ ํด๊ฒฐ์ ํ๋ฉด์ ๊ธฐ์กด์ ๊ณต๋ถ ๋ฐฉํฅ์ ๋ํด ๊ณ ๋ฏผ์ ํ๋ ๊ณ๊ธฐ๊ฐ ๋์์ต๋๋ค. ๋ํ, ์ ๋ฒ XGB Wrapper์ ๊ดํ ์๋ฌ์์๋ ๋น์ทํ ์๊ฐ์ ํ์์ต๋๋ค.
์ง๊ธ๊น์ง ์ด๋ก ์ชฝ์ผ๋ก๋ง ๋๋ฌด ์น์ฐ์น๊ฒ ๊ณต๋ถ๋ฅผ ํด์จ ๊ฒ ์๋๊น๋ผ๋ ์๊ฐ์ ํ์ต๋๋ค. ํ๋ ๋ฌผ๋ฆฌํ์ ์ด๋ค์ง ๋ชจ๋ฅด๊ฒ ์ผ๋ ์๋ ๋ฌผ๋ฆฌํ์ ํฌ๊ฒ ์ด๋ก ๋ฌผ๋ฆฌํ๊ณผ ์คํ ๋ฌผ๋ฆฌํ์ผ๋ก ๋๋์๋ค๊ณ ํฉ๋๋ค. ์ ๋ ์ด๋ก ์ชฝ์ผ๋ก๋ง ํธํฅ์ ์ผ๋ก ๊ณต๋ถ๋ฅผ ํด์๊ธฐ์ ์คํ์ ํด๋นํ๋ ์ฝ๋๋ฅผ ๋ค๋ฃจ๋ ๋ถ๋ถ์ ๋ถ์กฑํ๊ธฐ์ ์ด๋ฐ ์๋ฌ๋ค์ ๊ฒช์ ๊ฑฐ๋ผ ํ์ ํฉ๋๋ค.
๊ธฐ์กด์ ์ด ๋ธ๋ก๊ทธ์ ํฌ์คํ ์ ๋ณด๋๋ผ๋ AI์ ๊ด๋ จ๋ ํฌ์คํ ์์๋ ์ด๋ก ์ ๋ํด ์ด์ผ๊ธฐ๊ฐ ๋ง์์ง๋ง, ์ฝ๋๋ก ์ด๋ป๊ฒ ๊ตฌํ์ด ๋ ์ ์๋์ง ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ฉด, ์ด๋ป๊ฒ ์ฌ์ฉํ ์ ์๋์ง์ ๋ํ ๋ถ๋ถ์ด ๋ถ์กฑํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ฌํ ์๋ฌ๋ค์ ๊ณ๊ธฐ๋ก ์๋ก์ด ์ด๋ก ๋ค์ ๊ณต๋ถํ๊ฒ ๋ ๋๋ ์ด๋ก ๊ณผ ์คํ(์ฝ๋) ๋ ๋ค ์ฑ๊ฒจ๊ฐ๋ ๊ณต๋ถ๋ฅผ ํด์ผ๊ฒ ๋ค๋ ๊ด์ ์ด ๋ง๋ค์ด์ง ๋ฏํฉ๋๋ค.