Saya punya data X. Ukurannya (32, 10, 16), seperti contoh pada dokumentasi Keras.
x = np.random.random(size=(32, 10, 16)
Artinya, saya punya 32 data (sample). Setiap sample berisi data (10, 16): 10 baris dan 16 kolom. Ketika saya mengaplikasikan suatu layer (katakanlah, dan paling umum: Dense), agar bobot dari satu layer tersebut merata pada setiap elemen maka perlu kita gunakan timedistributed layer ini.
Perhatikan contoh berikut,
model0 = Sequential() model0.add(Dense(8, input_shape=(10, 16))) model0.summary()Hasilnya adalah sebagai berikut,
---
Model: "sequential_6" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= time_distributed_1 (TimeDist (None, 10, 8) 136 ================================================================= Total params: 136 Trainable params: 136 Non-trainable params: 0Bedakan dengan ini,
model1 = Sequential() model1.add(Dense(8, input_shape=(10, 16))) model1.summary()Hasilnya,
---
Model: "sequential_5" _________________________________________________________________ Layer (type) Shape Param # ================================================================= dense_3 (Dense) (None, 10, 8) 136 ================================================================= Total params: 136 Trainable params: 136Apa perbedaannya? Tidak ada. Saya juga bingung. Mari kita cari contoh lain, dari machinelearningmastery.
Sebenarnya, jika kita teliti, ada perbedaan bentuk output shape dari kedua contoh diatas, yang pertama memberikan bentuk ouput (TimeDist(None, 8, 10)), sedangkan yang kedua hanya (None, 8, 10).