web-dev-qa-db-fra.com

Avertissement Tensorflow: le graphique n'a pas pu être trié par ordre topologique?

Lorsque j'exécute une formation tensorflow (avec un graphique défini personnalisé, une source fermée), il affiche l'avertissement:

2018-10-03 14: 29: 24.352895: E tensorflow/core/grappler/optimizers/dependency_optimizer.cc: 666] Itération = 0, tri topologique échoué avec message: Le graphique n'a pas pu être trié dans l'ordre topologique.

Qu'est-ce que ça veut dire? Qu'est-ce qui pourrait probablement causer ce problème et comment l'éviter?

pdate: Pour mémoire, dans mon cas, tensorflow fonctionne toujours correctement malgré cet avertissement. Je pense donc que cela signifie simplement qu'il y a plus de boucles dans le graphe de calcul que ce que tensorflow attend, pas nécessairement une boucle infinie. J'ai corrigé cela en évitant d'utiliser la boucle manuelle dans le code, mais en utilisant plutôt la manipulation du tenseur (stack, concat, slice, reshape...)

9
THN

Un ordre topologique d'un graphe orienté est un ordre de ses sommets de telle manière que chaque fois qu'il y a une arête du sommet u au sommet v, sommet u vient avant vertex v dans l'ordre.

Ce type de classement est possible pour chaque graphe acyclique dirigé mais pas pour les graphes arbitraires. Il y a très probablement une sorte de cycle dans votre graphique qui empêche la réussite de l'algorithme de tri. Donc, la voie à suivre consiste à rechercher le cycle et à le supprimer d'une manière ou d'une autre.

Par exemple, considérons un très petit graphique avec deux sommets, u et v, et deux arêtes, u -> v et v -> u. Il n'y a aucun moyen de trier u et v conformément aux exigences données ci-dessus.

Sans plus d'informations sur votre code, il est difficile de dire exactement ce qui se passe.

3
piripiri