Teka-teki Bentuk Output Lapisan Padat Keras
Di Keras, lapisan Padat telah lama didokumenkan untuk meratakan inputnya sebelum menggunakan produk titik dengan kernel. Walau bagaimanapun, tingkah laku terkini mencadangkan sebaliknya.
Masalah:
Seperti yang digambarkan dalam kod ujian di bawah, output lapisan Padat mengekalkan paksi terakhir tensor input:
input1 = layers.Input((2,3)) output = layers.Dense(4)(input1) print(output)
Output:
<tf.Tensor 'dense_2/add:0' shape=(?, 2, 4) dtype=float32>
Jawapan:
Bertentangan dengan dokumentasi, lapisan Padat tidak meratakan input. Sebaliknya, ia menggunakan operasinya secara bebas di sepanjang paksi terakhir. Oleh itu, diberikan input bentuk (n_dim1, n_dim2, ..., n_dimk), bentuk output menjadi (n_dim1, n_dim2, ..., m), dengan m ialah bilangan unit dalam lapisan Padat.
Implikasi:
Tingkah laku ini menjadikan TimeDistributed(Padat(...)) dan Padat(...) berfungsi setara. Selain itu, memandangkan pemberat dikongsi merentasi paksi terakhir, lapisan Padat dengan bentuk input (n_dim1, n_dim2, ..., n_dimk) hanya mempunyai m * n_dimk m (parameter bias seunit) parameter boleh dilatih.
Ilustrasi Visual:
[Imej rangkaian saraf dengan lapisan Padat digunakan pada input dengan berbilang dimensi]
Ilustrasi ini menggambarkan cara operasi lapisan Padat digunakan secara bebas sepanjang paksi terakhir tensor input.
Atas ialah kandungan terperinci Bilakah Lapisan Padat Keras Meratakan Input?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!