Оскільки я зараз експериментую з 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визначення, нижня межа визначає кількість кроків, які будуть проходити.