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
: steps
non 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=1
l'entrée de formation et l'entrée de doc pour numpy_input_fn
me dit "num_epochs: Integer, nombre d'époques à parcourir sur les données. If None
fonctionnera pour toujours." . Dans num_epochs=1
l'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_train
une taille de 700000 et batch_size
était de 4).
Étapes d'entraînement définies par num_epochs
: steps
explicitement 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=1
dans 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.train
bien 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=1
lors de l'appel, numpy_input_fn
la formation s'arrête après 1000 étapes. En effet, steps=1000
in estimator.train(input_fn=train_input, steps=1000)
remplace le fichier num_epochs=1
in 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_epochs
pour tf.estimator.inputs.numpy_input_fn
et steps
pour estimator.train
définir, la borne inférieure détermine le nombre d'étapes qui seront exécutées.