2017-04-06 4 views
-1

Ich kann Tensorflow-System nicht verstehen. Zuerst schrieb ichIch kann Tensorflow-System nicht verstehen

#coding:UTF-8 

from __future__ import absolute_import 
from __future__ import division 
from __future__ import print_function 

import tensorflow as tf 

const1 = tf.constant(2) 
const2 = tf.constant(3) 
add_op = tf.add(const1,const2) 

with tf.Session() as sess: 
    result = sess.run(add_op) 
    print(result) 

und es aus 5. Zweite drucken, ich

schrieb
#coding:UTF-8 

from __future__ import absolute_import 
from __future__ import division 
from __future__ import print_function 

import tensorflow as tf 

const1 = tf.constant(2) 
const2 = tf.constant(3) 
add_op = tf.add(const1,const2) 
print(add_op) 

und es aus Tensor ("Add: 0" drucken, Form =(), dtype = int32). Ich kann dieses System nicht verstehen. Ich benutze Python und andere Sprachen, so denke ich tf.add() Methode ist Add-Methode.Jedoch, im Falle von Tensorflow, scheint es anders. warum ist dieser Teil

notwendig? Welche Funktionen hat dieser Teil?

Antwort

1

Ich würde vorschlagen, die offizielle Getting Started with TensorFlow Führung von TensorFlow liest die grundlegenden Konzepte der Bibliothek kennen zu lernen, wie die, die das Problem hier zu sein scheinen:

Jeden TensorFlow Programm besteht aus zwei Teilen:

  1. Erstellen des Computergraphen.
  2. Ausführen des Berechnungsgraphen.

Nun, was ist ein "Computational Graph"? In TensorFlow geben Sie eine Reihe von Operationen an, die auf Ihrer Eingabe ausgeführt werden. Diese Reihe von Operationen ist Ihr "Berechnungsgraph". Um das zu verstehen, an einigen Beispielen sehen sie sich:

  • Einfacher Zusatz: Lassen Sie sich bei Ihrem Beispiel aussieht, Ihr Code ist

    const1 = tf.constant(2) 
    const2 = tf.constant(3) 
    add_op = tf.add(const1,const2) 
    

    Dies schafft zwei konstante Knoten des Graphen, und erzeugt einen zweiten Knoten was fügt sie hinzu. Grafisch dies wie folgt aussieht:

    graph for 2+3

  • es ein wenig komplizierter zu machen, können sagen, Sie haben einen Eingang x und wollen eine konstante 3, um es hinzuzufügen. Dann würde der Code sein:

    const1 = tf.constant(2) 
    x = tf.placeholder(tf.float32) 
    add_op = tf.add(const1,x) 
    

    und Ihr Diagramm ist

    graph for x+3

In beiden Beispielen war dies der erste Teil des Programms. Bisher haben wir nur definiert, wie unser Berechnungsdiagramm aussehen sollte, d. H. Welche Eingaben wir haben, welche Ausgaben und alle erforderlichen Berechnungen.

Aber: keine Berechnungen wurden bisher gemacht! Im zweiten Beispiel wissen Sie nicht einmal, was Ihre Eingabe x ist - nur dass es eine float32 sein wird. Wenn Sie eine GPU haben, werden Sie feststellen, dass TensorFlow noch nicht einmal die GPU berührt hat.Selbst wenn Sie ein riesiges neuronales Netzwerk mit Millionen von Trainingsbildern haben, läuft dieser Schritt in Millisekunden, da keine "echte" Arbeit geleistet werden muss.

Jetzt kommt Teil zwei: läuft die Grafik, die wir oben definiert haben. Hier passiert die Arbeit! Wir feuern TensorFlow durch Erstellen einer tf.Session, und dann können wir alles durch den Aufruf sess.run() ausführen.

with tf.Session() as sess: 
    result = sess.run(add_op) 
    print(result) 

Im zweiten Beispiel, müssen wir jetzt sagen TensorFlow was x unser Wert sein sollte:

with tf.Session() as sess: 
    result = sess.run(add_op, {x: 5.0}) 
    print(result) 

tl; dr: jedes TensorFlow Programm besteht aus zwei Teilen: 1. ein rechnerischen Aufbau Diagramm und 2. Ausführen dieses Diagramms. Mit tf.add definieren Sie nur die Grafik, aber noch keine Addition. Um dieses Diagramm auszuführen, verwenden Sie sess.run() wie in Ihrem ersten Stückcode.

+0

thx !! Ihre Antwort ist sehr gut für mich, es kann sehr gut verständlich sein.Ich habe eine Frage, kann ich tf.Session-Methode aufrufen ist Aktivierungsfunktion? Ich lese Tensorflow-Tutorial, aber ich kann diesen Teil nicht gut verstehen. – user21063

Verwandte Themen