Di sebagian besar model, ada parameter langkah yang menunjukkan jumlah langkah untuk menjalankan data . Namun saya melihat di sebagian besar penggunaan praktis, kami juga menjalankan fungsi fit N epoch .
Apa perbedaan antara menjalankan 1000 langkah dengan 1 epoch dan menjalankan 100 langkah dengan 10 epoch? Mana yang lebih baik dalam praktiknya? Adakah logika yang berubah antara periode yang berurutan? Mengacak data?
Jawaban:
Epoch biasanya berarti satu iterasi atas semua data pelatihan. Misalnya jika Anda memiliki 20.000 gambar dan ukuran kumpulan 100 maka epoch harus berisi 20.000 / 100 = 200 langkah. Namun saya biasanya hanya menetapkan jumlah langkah tetap seperti 1000 per epoch meskipun saya memiliki kumpulan data yang jauh lebih besar. Di akhir periode, saya memeriksa biaya rata-rata dan jika membaik, saya menyimpan pos pemeriksaan. Tidak ada perbedaan antara langkah-langkah dari satu zaman ke zaman lainnya. Saya hanya memperlakukan mereka sebagai pos pemeriksaan.
Orang-orang sering kali memilih kumpulan data di antara zaman. Saya lebih suka menggunakan fungsi random.sample untuk memilih data yang akan diproses di zaman saya. Jadi katakanlah saya ingin melakukan 1000 langkah dengan ukuran batch 32. Saya hanya akan mengambil 32.000 sampel secara acak dari kumpulan data pelatihan.
sumber
Langkah pelatihan adalah satu pembaruan gradien. Dalam satu langkah batch_size banyak contoh diproses.
Epoch terdiri dari satu siklus penuh melalui data pelatihan. Ini biasanya banyak langkah. Sebagai contoh, jika Anda memiliki 2.000 gambar dan menggunakan ukuran batch 10, epoch terdiri dari 2.000 gambar / (10 gambar / langkah) = 200 langkah.
Jika Anda memilih gambar pelatihan kami secara acak (dan independen) di setiap langkah, Anda biasanya tidak menyebutnya epoch. [Di sinilah jawaban saya berbeda dari yang sebelumnya. Lihat juga komentar saya.]
sumber
Karena saya saat ini sedang bereksperimen dengan API tf.estimator, saya ingin menambahkan temuan saya yang berembun di sini juga. Saya belum tahu apakah penggunaan parameter langkah dan epochs konsisten di seluruh TensorFlow dan oleh karena itu saya hanya berkaitan dengan tf.estimator (khususnya tf.estimator.LinearRegressor) untuk saat ini.
Langkah-langkah pelatihan ditentukan oleh
num_epochs
:steps
tidak ditentukan secara eksplisitKomentar: Saya telah menyetel
num_epochs=1
untuk input pelatihan dan entri dokumen untuknumpy_input_fn
memberi tahu saya "num_epochs: Integer, jumlah masa untuk mengulang data. JikaNone
akan berjalan selamanya." . Dengannum_epochs=1
contoh di atas, pelatihan berjalan tepat x_train.size / batch_size times / steps (dalam kasus saya ini adalah 175000 langkah karenax_train
memiliki ukuran 700000 danbatch_size
4).Langkah-langkah pelatihan ditentukan oleh
num_epochs
:steps
didefinisikan secara eksplisit lebih tinggi dari jumlah langkah yang secara implisit didefinisikan olehnum_epochs=1
Komentar:
num_epochs=1
dalam kasus saya berarti 175.000 langkah ( x_train.size / batch_size dengan x_train.size = 700.000 dan batch_size = 4 ) dan ini persis jumlah langkahnyaestimator.train
meskipun parameter langkah disetel ke 200.000estimator.train(input_fn=train_input, steps=200000)
.Langkah-langkah pelatihan ditentukan oleh
steps
Komentar: Meskipun saya telah mengatur
num_epochs=1
kapan memanggilnumpy_input_fn
pelatihan berhenti setelah 1000 langkah. Ini karenasteps=1000
diestimator.train(input_fn=train_input, steps=1000)
menimpanum_epochs=1
intf.estimator.inputs.numpy_input_fn({'x':x_train},y_train,batch_size=4,num_epochs=1,shuffle=True)
.Kesimpulan : Apapun parameter
num_epochs
untuktf.estimator.inputs.numpy_input_fn
dansteps
untukestimator.train
ditentukan, batas bawah menentukan jumlah langkah yang akan dijalankan.sumber
Dengan kata mudah
Epoch: Epoch dianggap sebagai jumlah satu lintasan dari seluruh dataset
Langkah: Dalam tensorflow satu langkah dianggap sebagai jumlah epoch dikalikan dengan contoh dibagi dengan ukuran batch
sumber
Epoch: Epoch pelatihan menunjukkan penggunaan lengkap semua data pelatihan untuk penghitungan dan pengoptimalan gradien (melatih model).
Langkah: Langkah pelatihan berarti menggunakan satu ukuran kumpulan data pelatihan untuk melatih model.
Jumlah langkah pelatihan per epoch:
total_number_of_training_examples
/batch_size
.Jumlah total langkah pelatihan:
number_of_epochs
xNumber of training steps per epoch
.sumber
Karena belum ada jawaban yang diterima: Secara default, waktu menjalankan semua data pelatihan Anda. Dalam hal ini Anda memiliki n langkah, dengan n = Training_lenght / batch_size.
Jika data pelatihan Anda terlalu besar, Anda dapat memutuskan untuk membatasi jumlah langkah selama satu periode. [ Https://www.tensorflow.org/tutorials/structured_data/time_series?_sm_byp=iVVF1rD6n2Q68VSN]
Ketika jumlah langkah mencapai batas yang Anda tetapkan, proses akan dimulai kembali, memulai epoch berikutnya. Saat bekerja di TF, data Anda biasanya diubah terlebih dahulu menjadi daftar batch yang akan dimasukkan ke model untuk pelatihan. Pada setiap langkah Anda memproses satu kelompok.
Mengenai apakah lebih baik menyetel 1000 langkah untuk 1 epoch atau 100 langkah dengan 10 epoch, saya tidak tahu apakah ada jawaban langsung. Namun berikut adalah hasil dari melatih CNN dengan kedua pendekatan menggunakan tutorial data rangkaian waktu TensorFlow:
Dalam hal ini, kedua pendekatan tersebut menghasilkan prediksi yang sangat mirip, hanya profil pelatihan yang berbeda.
langkah = 20 / epochs = 100
langkah = 200 / epochs = 10
sumber