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:

  1. Quelle est la relation entre tensor et Variable, tensor

    vs. tf.constant, tenseur' vs. <!--5?
  2. sont-elles toutes sortes de tenseurs?
24
demandé sur julianfperez 2016-06-16 06:18:40

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.namedtupleTensor objets qui peuvent être récupérés individuellement.

48
répondu Yaroslav Bulatov 2017-10-02 15:09:44

glossaire:

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 dans sess.run())
  • les Variables sont des tenseurs que vous pouvez mettre à jour (avec et bentrée;multiplie les tenseurs avec lui-même et ensuite de ajoute le résultat de ces multiplications pour produire le résultat tenseur t3. Et ces multiplications et ajoutOps se produisent aux noeuds dans le graphique de calcul.

    Et ces tenseurs a et b 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(ou broadcast capable de réaliser les opérations.

5
répondu kmario23 2018-05-27 15:18:38

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?

0
répondu Amit Arora 2018-05-20 06:54:38