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