Cette réponse est fondée sur l'expérimentation que j'ai fait sur le tutoriel d'initiation code.
Mad Wombat a donné une explication détaillée des termes num_epochs, batch_size et les étapes. Cette réponse est une extension de sa réponse.
num_epochs - Le nombre maximum de fois que le programme peut effectuer une itération sur l'ensemble du jeu de données dans un train()
. L'utilisation de cet argument, nous pouvons limiter le nombre de lots qui peuvent être traitées lors de l'exécution d'un train()
méthode.
batch_size - Le nombre d'exemples dans un lot unique émise par le input_fn
les étapes - Nombre de lots de la LinearRegressor.train()
méthode peut traiter en une seule exécution
max_steps est un autre argument pour LinearRegressor.train()
méthode. Cet argument définit le nombre maximal d'étapes (lots) peut traiter dans l' LinearRegressor()
durée de vie des objets.
Voyons quel est ce moyen. Les expériences suivantes permettent de modifier les deux lignes de code fourni par le tutoriel. Reste du code reste comme c'est.
Remarque: Pour tous les exemples, supposons que le nombre de la formation, soit la longueur de x_train être égale à 4.
Ex 1:
input_fn = tf.estimator.inputs.numpy_input_fn(
{"x": x_train}, y_train, batch_size=4, num_epochs=2, shuffle=True)
estimator.train(input_fn=input_fn, steps=10)
Dans cet exemple, nous avons défini la batch_size = 4 et num_epochs = 2. Ainsi, l' input_fn
d'émettre de seulement 2 lots de données d'entrée pour une exécution d' train()
. Même si nous avons défini les étapes = 10, train()
méthode s'arrête après 2 étapes.
Maintenant, exécutez l' estimator.train(input_fn=input_fn, steps=10)
de nouveau. Nous pouvons voir que les 2 autres étapes ont été exécutées. Nous pouvons continuer l'exécution de l' train()
méthode, encore et encore. Si nous exécutons train()
50 fois, un total de 100 étapes ont été exécutées.
Ex 2:
input_fn = tf.estimator.inputs.numpy_input_fn(
{"x": x_train}, y_train, batch_size=2, num_epochs=2, shuffle=True)
estimator.train(input_fn=input_fn, steps=10)
Dans cet exemple, la valeur de batch_size est changée à 2 (il était égal à 4 Ex 1). Maintenant, à chaque exécution d' train()
méthode, 4 étapes sont traitées. Après la 4ème étape, il n'y a pas de lots pour exécuter sur. Si l' train()
méthode est exécutée à nouveau, un autre 4 étapes faire un total de 8 étapes.
Ici, la valeur des étapes n'a pas d'importance parce que l' train()
méthode peut obtenir un maximum de 4 lots. Si la valeur de mesures est inférieur à (num_epochs x training_size) / batch_size, voir ex 3.
Ex 3:
input_fn = tf.estimator.inputs.numpy_input_fn(
{"x": x_train}, y_train, batch_size=2, num_epochs=8, shuffle=True)
estimator.train(input_fn=input_fn, steps=10)
Maintenant, laissez batch_size = 2, num_epochs = 8 et étapes = 10. L' input_fn
peut émettre un total de 16 lots dans un terme d' train()
méthode. Toutefois, des mesures est fixé à 10. Cela signifie que eventhough input_fn
peut fournir 16 lots pour l'exécution, train()
doit s'arrêter après 10 étapes. Bien sûr, train()
méthode peut être ré-exécuté pour plus d'étapes, de façon cumulative.
À partir des exemples 1, 2 et 3, nous pouvons voir clairement comment les valeurs de mesures, num_epoch et batch_size incidence sur le nombre d'étapes qui peuvent être exécutées par train()
méthode en un seul passage.
Le max_steps argument de l' train()
méthode limite le nombre total d'étapes qui peuvent être exécutés de façon cumulative en train()
Ex 4:
Si batch_size = 4, num_epochs = 2, l' input_fn
d'émettre de 2 lots pour un train()
d'exécution. Mais, si max_steps
est fixé à 20, peu importe combien de fois train()
est exécutée seulement 20 étapes seront exécutées dans l'optimisation. Ceci est en contraste à l'exemple 1, où l'optimiseur peut exécuter à 200 étapes si l' train()
méthode est exuted 100 fois.
Espérons que cela donne une compréhension détaillée de ce que ces arguments veux dire.