Dalam Keras LSTM(n)
berarti "buat layer LSTM yang terdiri dari unit LSTM. Gambar berikut menunjukkan apa layer dan unit (atau neuron) itu, dan gambar paling kanan menunjukkan struktur internal unit LSTM tunggal.
Gambar berikut menunjukkan bagaimana seluruh lapisan LSTM beroperasi.
Seperti yang kita ketahui layer LSTM memproses urutan, yaitu, . Pada setiap langkah layer (setiap neuron) mengambil input , output dari langkah sebelumnya , dan bias , dan menghasilkan vektor . Koordinat adalah output dari neuron / unit, dan karenanya ukuran vektor sama dengan jumlah unit / neuron. Proses ini berlanjut hingga .x1,…,xNtxtht−1bhththtxN
Sekarang mari kita menghitung jumlah parameter untuk LSTM(1)
dan LSTM(3)
dan membandingkannya dengan apa yang menunjukkan Keras ketika kita sebut model.summary()
.
Biarkan menjadi ukuran vektor dan menjadi ukuran vektor (ini juga merupakan jumlah neuron / unit). Setiap neuron / unit mengambil vektor input, output dari langkah sebelumnya, dan bias yang membuat parameter (bobot). Tapi kita harus jumlah neuron dan jadi kita harus parameter. Akhirnya setiap unit memiliki 4 bobot (lihat gambar paling kanan, kotak kuning) dan kami memiliki rumus berikut untuk sejumlah parameter:
inpxtouthtinp+out+1outout×(inp+out+1)
4out(inp+out+1)
Mari kita bandingkan dengan apa yang dihasilkan Keras.
Contoh 1.
t1 = Input(shape=(1, 1))
t2 = LSTM(1)(t1)
model = Model(inputs=t1, outputs=t2)
print(model.summary())
Layer (type) Output Shape Param #
=================================================================
input_2 (InputLayer) (None, 1, 1) 0
_________________________________________________________________
lstm_2 (LSTM) (None, 1) 12
=================================================================
Total params: 12
Trainable params: 12
Non-trainable params: 0
_________________________________________________________________
Jumlah unit adalah 1, ukuran vektor input adalah 1, jadi .4×1×(1+1+1)=12
Contoh 2.
input_t = Input((4, 2))
output_t = LSTM(3)(input_t)
model = Model(inputs=input_t, outputs=output_t)
print(model.summary())
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_6 (InputLayer) (None, 4, 2) 0
_________________________________________________________________
lstm_6 (LSTM) (None, 3) 72
=================================================================
Total params: 72
Trainable params: 72
Non-trainable params: 0
Jumlah unit adalah 3, ukuran vektor input adalah 2, jadi4×3×(2+3+1)=72