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 eksplisit
estimator = tf.estimator.LinearRegressor(feature_columns=ft_cols)
train_input = tf.estimator.inputs.numpy_input_fn({'x':x_train},y_train,batch_size=4,num_epochs=1,shuffle=True)
estimator.train(input_fn=train_input)
Komentar: Saya telah menyetel num_epochs=1
untuk input pelatihan dan entri dokumen untuk numpy_input_fn
memberi tahu saya "num_epochs: Integer, jumlah masa untuk mengulang data. Jika None
akan berjalan selamanya." . Dengan num_epochs=1
contoh di atas, pelatihan berjalan tepat x_train.size / batch_size times / steps (dalam kasus saya ini adalah 175000 langkah karena x_train
memiliki ukuran 700000 dan batch_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
estimator = tf.estimator.LinearRegressor(feature_columns=ft_cols)
train_input = tf.estimator.inputs.numpy_input_fn({'x':x_train},y_train,batch_size=4,num_epochs=1,shuffle=True)
estimator.train(input_fn=train_input, steps=200000)
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 langkahnya estimator.train
meskipun parameter langkah disetel ke 200.000 estimator.train(input_fn=train_input, steps=200000)
.
Langkah-langkah pelatihan ditentukan oleh steps
estimator = tf.estimator.LinearRegressor(feature_columns=ft_cols)
train_input = tf.estimator.inputs.numpy_input_fn({'x':x_train},y_train,batch_size=4,num_epochs=1,shuffle=True)
estimator.train(input_fn=train_input, steps=1000)
Komentar: Meskipun saya telah mengatur num_epochs=1
kapan memanggil numpy_input_fn
pelatihan berhenti setelah 1000 langkah. Ini karena steps=1000
di estimator.train(input_fn=train_input, steps=1000)
menimpa num_epochs=1
in tf.estimator.inputs.numpy_input_fn({'x':x_train},y_train,batch_size=4,num_epochs=1,shuffle=True)
.
Kesimpulan : Apapun parameter num_epochs
untuk tf.estimator.inputs.numpy_input_fn
dan steps
untuk estimator.train
ditentukan, batas bawah menentukan jumlah langkah yang akan dijalankan.