Оскільки я зараз експериментую з API tf.estimator, я також хотів би додати свої родові висновки і тут. Я ще не знаю, чи використання параметрів кроків та епох є послідовним у всьому 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
хоч параметр кроків було встановлено на 200 000 estimator.train(input_fn=train_input, steps=200000)
.
Кроки навчання, визначені 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
тренувань припиняється після 1000 кроків. Це тому, що 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
визначення, нижня межа визначає кількість кроків, які будуть проходити.