Поскольку в настоящее время я экспериментирую с 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: Integer, количество эпох для перебора данных. Если 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 = 700000 и batch_size = 4 ), и это именно то количество шагов, estimator.train
хотя для параметра steps было установлено значение 200000 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
in estimator.train(input_fn=train_input, steps=1000)
перезаписывает файл num_epochs=1
in 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
определения, нижняя граница определяет количество шагов , которые будут пробегают.