Comment puis-je exécuter une boucle avec un tenseur de sa gamme? (en tensorflow)
Je veux avoir une boucle for que le nombre d'itérations est dépendent d'un tenseur de valeur. Par exemple:
for i in tf.range(input_placeholder[1,1]):
# do something
Mais j'ai l'erreur suivante:
"TypeError: 'Tenseur' objet n'est pas itératif"
Que dois-je faire?
OriginalL'auteur Poorya Pzm | 2016-02-11
Vous devez vous connecter pour publier un commentaire.
Pour ce faire, vous aurez besoin d'utiliser la tensorflow boucle while (
tf.while_loop
) comme suit:qu'en est-il, j'ai une variable dans la boucle ? J'obtiens une erreur de référence stackoverflow.com/questions/47760429/...
Cela semble fonctionner, mais semble en contradiction directe avec la Tensorflow conseil: Pour corriger des programmes, while_loop doit renvoyer le même résultat pour un parallel_iterations > 0." Il semble que cela peut créer une situation de concurrence conduisant à la boucle étant évalué entre "n" et "n*parallel_iterations" fois
OriginalL'auteur patapouf_ai
Le type de la valeur de retour de TensorFlow Python fonctions de l'API, y compris
tf.range
est unTenseur
. UnTensor
est une symbolique de la poignée de nœud dans un graphe qui représente le calcul. Vous effectuer le calcul par l'appel de laeval
méthode sur unTensor
, ou par la transmission de l'objet àrun
méthode deSession
. Dans votre cas, peut-être que ce que vous faire est de simplement parcourirnumpy
'srange
.En fait, j'ai deux entrées. Premier est une matrice, et la seconde est de savoir combien de fois une opération spécifique qui devrait être fait.
Lorsque vous écrivez un tensorflow op, ayant numpy appels, empêche l'op de s'exécuter sur le processeur graphique, il est donc important pour l'op, pour avoir seulement GPU compatible tensorflow ops.
OriginalL'auteur keveman