L'obtention de l'apprentissage en cours taux de tf.le train.AdamOptimizer
Je voudrais imprimer le taux d'apprentissage pour chaque étape de mon nn.
Je sais qu'Adam a un apprentissage adaptatif taux, mais est-il une manière que je peux voir ceci (pour la visualisation dans tensorboard)
- Par rapidement la lecture du code, vous pouvez obtenir de tr: imprimer sess.exécuter(adam_op._lr_t), après avoir adam_op = tf.le train.AdamOptimizer(0.1, beta1=0.5, beta2=0.5) , train_op = adam_op.minimiser(coût). Cependant, il n'est pas sûr de son travail dans votre code. Pouvez-vous qickly test?
- Note de côté: La bonne façon de penser à propos d'adam n'est pas que l'apprentissage de taux (mise à l'échelle de la dégradés), mais comme une étape de taille. Le
learning_rate
que vous transmettez est la taille maximale du pas (par paramètre), Adam prend des mesures jusqu'à la taille, selon le degré de cohérence de la pente est. - OK @mdaoust, mais alors comment puis-je obtenir le taux d'apprentissage à chaque étape? J'ai essayé Sung Kim suggestion, mais ne fonctionne pas, car il renvoie une ligne plate. Merci.
Vous devez vous connecter pour publier un commentaire.
Tous les optimiseurs disposent d'une salle de variable qui contient la valeur de l'apprentissage d'un taux de.
Dans adagrad et la descente de gradient il est appelé
self._learning_rate
. Dans adam il estself._lr
.De sorte que vous aurez juste besoin d'imprimer
sess.run(optimzer._lr)
d'obtenir cette valeur. Sess.run est nécessaire, car ils sont des tenseurs.Sung Kim suggestion a fonctionné pour moi, mon étapes exactes ont été:
GradientDescentOptimizer
et l'utilisationself._learning_rate
. Il ne fonctionne pas pour moi. J'obtiens l'erreurAttributeError: 'Operation' object has no attribute '_learning_rate'
Je pense que la meilleure chose que vous pouvez faire est sous-classe de l'optimiseur.
Il y a plusieurs méthodes, qui, je pense, d'obtenir expédiés en fonction de type de variable. Régulière Dense variables semblent passer par
_apply_dense
. Cette solution ne fonctionne pas pour clairsemée ou d'autres choses.Si vous regardez la la mise en œuvre vous pouvez voir que c'est le stockage de l'
m
ett
EMAs dans ces "machines à sous". Donc quelque chose comme cela semble le faire:step
ici sera dans l'intervalle [-1,1], c'est ce qui est multiplié par le taux d'apprentissage, détermine à l'étape appliquée aux paramètres.Il n'y a souvent pas de nœud dans le graphe pour elle car il y a un gros
training_ops.apply_adam
qui fait tout.Ici, je suis juste la création d'un histogramme de synthèse à partir d'elle. Mais vous pouvez le coller dans un dictionnaire attaché à l'objet et à le lire plus tard ou faire ce que vous voulez avec elle.
Dropant que dans
mnist_deep.py
, et en ajoutant quelques résumés à la formation de la boucle:Produit le texte suivant figure dans TensorBoard:
Could not satisfy explicit device specification '/device:GPU:1' because no supported kernel for GPU devices is available
. Retrait de latf.summary.histogram
ligne de retirer la plainte.Dans TensorFlow sources de courant lr pour Adam optimiseur calcule comme:
Donc, essayez-le: