Comment comprendre le terme "tenseur" dans TensorFlow?
je suis nouveau à TensorFlow. Pendant que je lis la documentation existante, j'ai trouvé le terme tensor
vraiment déroutant. Pour cette raison, je dois clarifier les questions suivantes:
- Quelle est la relation entre
tensor
etVariable
,tensor
vs.tf.constant
, tenseur' vs. <!--5? - sont-elles toutes sortes de tenseurs?
4 réponses
TensorFlow n'a pas d'objets tenseurs de première classe, ce qui signifie qu'il n'y a aucune notion de Tensor
dans le graphique sous-jacent qui est exécuté par l'exécution. Au lieu de cela, le graphe se compose de noeuds op connectés les uns aux autres, représentant des opérations. Une opération alloue de la mémoire pour ses sorties, qui sont disponibles sur les endpoints :0
,:1
, etc, et vous pouvez penser de chacun de ces paramètres en tant que Tensor
. Si vous avez tensor
correspondant à nodename:0
vous pouvez obtenir sa valeur comme sess.run(tensor)
ou sess.run('nodename:0')
. La granularité d'exécution se produit au niveau de l'opération, donc le run
la méthode va exécuter op qui va calculer tous les paramètres, pas seulement le :0
point de terminaison. Il est possible d'avoir un noeud Op sans sortie (comme
vous pouvez examiner ce qui se passe dans le graphique sous-jacent en faisant quelque chose comme ce
tf.reset_default_graph()
value = tf.constant(1)
print(tf.get_default_graph().as_graph_def())
tf.constant
vous obtenez un seul noeud d'opération, et vous pouvez le récupérer en utilisant sess.run("Const:0")
ou sess.run(value)
de Même, value=tf.placeholder(tf.int32)
crée un noeud régulier avec nom Placeholder
, et vous pourrait nourrir feed_dict={"Placeholder:0":2}
ou feed_dict={value:2}
. Vous ne pouvez pas nourrir et aller chercher un placeholder dans le même session.run
appel, mais vous pouvez voir le résultat en attachant un tf.identity
noeud sur le dessus et de récupération.
pour la variable
tf.reset_default_graph()
value = tf.Variable(tf.ones_initializer()(()))
value2 = value+3
print(tf.get_default_graph().as_graph_def())
Vous verrez que il crée deux nœuds Variable
et Variable/read
, le :0
endpoint est une valeur valide pour récupérer ces deux noeuds. Cependant Variable:0
spécial ref
tapez ce qui signifie qu'il peut être utilisé comme entrée dans les opérations de mutation. Le résultat de L'appel de Python tf.Variable
est un Python Variable
objet et il y a quelques Python magie de remplacer Variable/read:0
ou Variable:0
selon que la mutation est nécessaire. Comme la plupart des opérations n'ont qu'un seul paramètre, :0
est supprimée. Un autre exemple est Queue
-- close()
la méthode va créer un nouveau Close
noeud op qui se connecte à Queue
op. Pour résumer -- les opérations sur les objets python comme Variable
et Queue
mise en correspondance avec différents noeuds op TensorFlow sous-jacents selon l'utilisation.
pour des opérations comme tf.split
ou tf.nn.top_k
qui créent des noeuds avec plusieurs paramètres, Python est session.run
appeler automatiquement sortie wraps en tuple
ou collections.namedtuple
Tensor
objets qui peuvent être récupérés individuellement.
un tenseur est un tableau multidimensionnel dactylographié. Par exemple, un tableau 4-D de numéros de points flottants représentant un mini-lot d'images avec des dimensions [lot, hauteur, largeur, canal].
En Gros, tous les est un Tenseur dans TensorFlow (d'où le nom):
- les placeholders sont des tenseurs auxquels vous pouvez donner une valeur (avec le
feed_dict
argument danssess.run()
) - les Variables sont des tenseurs que vous pouvez mettre à jour (avec et
b
entrée;multiplie les tenseurs avec lui-même et ensuite de ajoute le résultat de ces multiplications pour produire le résultat tenseurt3
. Et ces multiplications et ajoutOp
s se produisent aux noeuds dans le graphique de calcul.Et ces tenseurs
a
etb
peut être tenseurs constants, tenseurs variables, ou des placeholders. Il n'a pas d'importance, comme tant qu'ils sont de la même type de données et les formes compatibles(oubroadcast
capable de réaliser les opérations.
le type de données central de TensorFlow est le tenseur. Les tenseurs sont les composants sous-jacents du calcul et une structure de données fondamentale dans TensorFlow. Sans utiliser des interprétations mathématiques complexes, nous pouvons dire qu'un tenseur (en TensorFlow) décrit un tableau numérique multidimensionnel, avec la collecte zéro ou n-dimensionnelle de données, déterminée par le rang, la forme, et le type.Lire La Suite: Qu'est-ce que les tenseurs dans TensorFlow?