ในขณะที่ฉันกำลังทดลองกับ tf.estimator API ฉันต้องการเพิ่มการค้นพบที่น่าสนใจของฉันที่นี่ด้วย ฉันยังไม่รู้ว่าการใช้ขั้นตอนและพารามิเตอร์ยุคนั้นสอดคล้องกันตลอด TensorFlow หรือไม่ดังนั้นฉันจึงเกี่ยวข้องกับ tf.estimator (โดยเฉพาะ tf.estimator.LinearRegressor) ในตอนนี้
ขั้นตอนการฝึกที่กำหนดโดยnum_epochs
: 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)
ความคิดเห็น: ฉันได้ตั้งค่าnum_epochs=1
สำหรับอินพุตการฝึกอบรมและรายการเอกสารสำหรับnumpy_input_fn
บอกฉันว่า"num_epochs: จำนวนเต็มจำนวนยุคที่จะวนซ้ำข้อมูลถ้าNone
จะทำงานตลอดไป" . ด้วยnum_epochs=1
ในตัวอย่างข้างต้นการฝึกอบรมวิ่งตรงx_train.size / batch_sizeครั้ง / ขั้นตอน (ในกรณีของฉันนี้คือ 175000 ขั้นตอนx_train
มีขนาดของ 700000 และbatch_size
4)
ขั้นตอนการฝึกที่กำหนดโดยnum_epochs
: steps
กำหนดไว้อย่างชัดเจนสูงกว่าจำนวนขั้นตอนที่กำหนดโดยนัยnum_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)
หมายเหตุ: num_epochs=1
ในกรณีของฉันจะหมายถึงขั้นตอน 175000 ( x_train.size / batch_sizeกับx_train.size = 700,000และbatch_size = 4 ) และตรงนี้เป็นจำนวนขั้นตอนestimator.train
แม้ว่าขั้นตอนพารามิเตอร์ถูกกำหนดให้ estimator.train(input_fn=train_input, steps=200000)
200,000
ขั้นตอนการฝึกอบรมที่กำหนดโดย 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)
ความคิดเห็น: แม้ว่าฉันจะตั้งค่าnum_epochs=1
เมื่อเรียกnumpy_input_fn
การฝึกหยุดหลังจาก 1,000 ก้าว เนื่องจากsteps=1000
ในการestimator.train(input_fn=train_input, steps=1000)
เขียนทับnum_epochs=1
ในtf.estimator.inputs.numpy_input_fn({'x':x_train},y_train,batch_size=4,num_epochs=1,shuffle=True)
.
สรุป : สิ่งที่พารามิเตอร์num_epochs
สำหรับtf.estimator.inputs.numpy_input_fn
และsteps
สำหรับการestimator.train
กำหนดขอบเขตที่ต่ำกำหนดจำนวนขั้นตอนซึ่งจะวิ่งผ่าน