Perbedaan keras antara val_loss dan loss saat latihan

18

Apa perbedaan antara val_lossdan lossselama pelatihan di Keras?

Misalnya

Epoch 1/20
1000/1000 [==============================] - 1s - loss: 0.1760, val_loss: 0.2032  

Di beberapa situs saya membaca bahwa pada validasi, dropout tidak berfungsi.

Vladimircape
sumber
Apa yang Anda baca tentang dropout mungkin bahwa, ketika dropout digunakan (yaitu dropouttidak None), dropout hanya diterapkan selama pelatihan (yaitu tidak ada dropout yang diterapkan selama validasi). Dengan demikian, salah satu perbedaan antara kehilangan validasi ( val_loss) dan kehilangan pelatihan ( loss) adalah bahwa, ketika menggunakan dropout, kehilangan validasi bisa lebih rendah dari kehilangan pelatihan (biasanya tidak diharapkan dalam kasus di mana dropout tidak digunakan).
Psi

Jawaban:

15

val_lossadalah nilai fungsi biaya untuk data validasi silang Anda dan kerugian adalah nilai fungsi biaya untuk data pelatihan Anda. Pada data validasi, neuron yang menggunakan drop out tidak menjatuhkan neuron acak. Alasannya adalah bahwa selama pelatihan kami menggunakan drop out untuk menambah kebisingan agar tidak terlalu pas. Selama menghitung validasi silang, kita berada dalam fase mengingat dan tidak dalam fase pelatihan. Kami menggunakan semua kemampuan jaringan.

Terima kasih kepada salah satu teman terkasih kami, saya mengutip dan menjelaskan konten dari sini yang bermanfaat.

validation_split: Float antara 0 dan 1. Fraksi data pelatihan yang akan digunakan sebagai data validasi. Model akan memisahkan fraksi data pelatihan ini, tidak akan melatihnya, dan akan mengevaluasi kerugian dan metrik model apa pun pada data ini di akhir setiap zaman. Data validasi dipilih dari sampel terakhir dalam data x dan y yang disediakan, sebelum pengocokan.

validation_data: tuple (x_val, y_val) atau tuple (x_val, y_val, val_sample_weights) untuk mengevaluasi kerugian dan metrik model apa pun di akhir setiap zaman. Model tidak akan dilatih tentang data ini. Ini akan mengesampingkan validation_split.

Seperti yang dapat Anda lihat

fit(self, x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0, steps_per_epoch=None, validation_steps=None)

fitmetode yang digunakan dalam Kerasmemiliki parameter bernama validation_split, yang menentukan persentase data yang digunakan untuk mengevaluasi model yang dibuat setelah setiap zaman. Setelah mengevaluasi model menggunakan jumlah data ini, itu akan dilaporkan oleh val_lossjika Anda telah menetapkan verbose 1; selain itu, sebagaimana ditentukan dengan jelas oleh dokumentasi, Anda dapat menggunakan salah satu validation_dataatau validation_split. Data validasi silang digunakan untuk menyelidiki apakah model Anda terlalu sesuai dengan data atau tidak. Inilah yang dapat kita pahami apakah model kita memiliki kemampuan generalisasi atau tidak.

Media
sumber