Comme j'expérimente actuellement avec l'API tf.estimator, j'aimerais également ajouter mes résultats de rosée ici. Je ne sais pas encore si l'utilisation des paramètres d'étapes et d'époques est cohérente dans TensorFlow et je ne parle donc que de tf.estimator (en particulier de tf.estimator.LinearRegressor) pour le moment.
Étapes de formation définies par num_epochs: stepsnon explicitement définies
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)
Commentaire: J'ai défini num_epochs=1l'entrée de formation et l'entrée de doc pour numpy_input_fnme dit "num_epochs: Integer, nombre d'époques à parcourir sur les données. If Nonefonctionnera pour toujours." . Dans num_epochs=1l'exemple ci-dessus, la formation s'exécute exactement x_train.size / batch_size fois / étapes (dans mon cas, il s'agissait de 175000 étapes comme x_trainune taille de 700000 et batch_sizeétait de 4).
Étapes d'entraînement définies par num_epochs: stepsexplicitement définies plus haut que le nombre d'étapes implicitement définies parnum_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)
Commentaire: num_epochs=1dans mon cas, cela signifierait 175000 étapes ( x_train.size / batch_size avec x_train.size = 700000 et batch_size = 4 ) et c'est exactement le nombre d'étapes estimator.trainbien que le paramètre steps ait été défini sur 200000 estimator.train(input_fn=train_input, steps=200000).
Étapes de formation définies par 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)
Commentaire: Bien que je l'ai défini num_epochs=1lors de l'appel, numpy_input_fnla formation s'arrête après 1000 étapes. En effet, steps=1000in estimator.train(input_fn=train_input, steps=1000)remplace le fichier num_epochs=1in tf.estimator.inputs.numpy_input_fn({'x':x_train},y_train,batch_size=4,num_epochs=1,shuffle=True).
Conclusion : Quels que soient les paramètres num_epochspour tf.estimator.inputs.numpy_input_fnet stepspour estimator.traindéfinir, la borne inférieure détermine le nombre d'étapes qui seront exécutées.