2017-05-03 1 views
0

J'essaie de développer une régression logistique dans le flux tensoriel distribué et je veux intégrer un contrôle de convergence dans mon algorithme en dehors de la limite supérieure des itérations. Le critère de convergence que je suis sur le point d'utiliser estConvergence dans la régression logistique dans le flux tensoriel distribué

|| prevW - currW || Où prevW est les valeurs précédentes des poids du modèle et correspondent aux valeurs actuelles. E est la tolérance de convergence.

Ma question concerne les poids des modèles précédents. Puisque j'utilise entre la réplication de graphe et la formation asynchrone, je ne sais pas quand c'est le travailleur du cluster mettra à jour les poids. Supposons qu'un travailleur ait calculé les nouveaux poids à l'aide d'un lot et qu'il veuille vérifier si l'algorithme a convergé pour s'arrêter. Je vais utiliser les poids disponibles dans la réplique locale (donc utiliser le tenseur correspondant) ou j'évaluerai le tenseur pour obtenir la dernière valeur mise à jour avant de continuer avec le calcul en cours? J'ai essayé de faire comme décrit ci-dessus, mais l'algorithme n'a pas convergé et s'est arrêté après que la limite supérieure des itérations ait été atteinte.

Merci d'avance pour votre aide: D

Répondre

0

Je ferais le contrôle de la convergence dans le même dispositif où les variables sont. De cette façon, vous évitez de copier trop de choses sur le réseau. Cela peut être fait en le mettant dans un bloc with tf.device(variable.device):.

+0

Merci pour votre réponse! :) Dans mon cas, les variables sont stockées dans le serveur de paramètres. Même si je place la variable de convergence correspondante sur un travailleur, comme les poids précédents, je considère comme les dernières variables le travailleur essayant de vérifier la convergence calculée ou les dernières stockées dans le ps qui ont pu être modifiées par un autre travailleur. ? – nikospro93

+0

Je pense que c'est une question d'algorithme qui devrait être décidée expérimentalement (c'est-à-dire essayer les deux et voir laquelle est la plus robuste). Les tests de convergence avec un gradient stochastique peuvent être difficiles car voir un gradient qui ne mène à aucun mouvement ne signifie pas que vous ne verrez jamais un gradient qui mène au mouvement. –