Ich habe [TensorFlow Official Tutorial] ausprobiert (https://www.tensorflow.org/get_started/get_started) Es ist nur ein einfaches Berechnungsdiagramm. Stellen Sie sicher, dass Sie TensorFlow installiert haben.
Führen Sie "Python" im Terminal aus (im Folgenden im Interpreter).
>>>import tensorflow as tf
>>>node1 = tf.constant(3.0, dtype=tf.float32) #Konstante 3.Auf 0 setzen
>>>node2 = tf.constant(4.0)
>>>print(node1, node2)
Knoten generieren bei der Auswertung 3.0 und 4.0. Um einen Knoten tatsächlich auszuwerten, müssen Sie innerhalb der Sitzung ein Berechnungsdiagramm ausführen.
Druckausgabe
Tensor("Const:0", shape=(), dtype=float32) Tensor("Const_1:0", shape=(), dtype=float32)
Erstellen Sie ein Sitzungsobjekt und rufen Sie die Ausführungsmethode auf, um das Berechnungsdiagramm (Knoten1, Knoten2) zur Auswertung auszuführen.
>>>sess = tf.Session()
>>>print(sess.run([node1, node2]))
Druckausgabe
[3.0, 4.0]
Durch Kombinieren dieser Knoten (Knoten1, Knoten2) wird eine komplexe Berechnung (neues Berechnungsdiagramm) erstellt. Hinzufügen (Addition erstellen) vorerst
>>>node3 = tf.add(node1, node2) # node1 + node2
>>>print("node3:", node3)
>>>print("sess.run(node3):", sess.run(node3))
Druckausgabe
node3: Tensor("Add:0", shape=(), dtype=float32)
sess.run(node3): 7.0
Da Konstanten in diesem Diagramm unverändert festgelegt sind, verwenden Sie "Platzhalter", um externe Eingaben zu akzeptieren.
>>>a = tf.placeholder(tf.float32)
>>>b = tf.placeholder(tf.float32)
>>>adder_node = a + b # + provides a shortcut for tf.add(a, b)
>>>print(sess.run(adder_node, {a: 3, b: 4.5}))
>>>print(sess.run(adder_node, {a: [1, 3], b: [2, 4]}))
Druckausgabe
7.5
[ 3. 7.]
Lassen Sie uns das Berechnungsdiagramm komplizierter machen.
>>>add_and_triple = adder_node * 3.
>>>print(sess.run(add_and_triple, {a: 3, b: 4.5}))
Wenn ich es tatsächlich in eine Formel konvertiere, führt es die folgende Berechnung durch. "(a + b) * 3"
Druckausgabe
22.5
Maschinelles Lernen muss in der Lage sein, das Diagramm zu ändern, um neue Ausgaben mit derselben Eingabe zu erhalten. Mit Variablen können Sie Ihrem Diagramm trainierbare Parameter hinzufügen.
Wenn "tf.constant" aufgerufen wird, wird es initialisiert und eine Konstante gesetzt, sodass es nicht geändert werden kann.
tf.Variable
kann aktualisiert werden, ohne die Variable zu initialisieren, selbst wenn die Variable aufgerufen wird.
>>>W = tf.Variable([.3], dtype=tf.float32)
>>>b = tf.Variable([-.3], dtype=tf.float32)
>>>x = tf.placeholder(tf.float32)
>>>linear_model = W * x + b
>>>init = tf.global_variables_initializer()
>>>sess.run(init)
>>>print(sess.run(linear_model, {x: [1, 2, 3, 4]}))
Der Teil init = .. ~
ist eine Variable zum Initialisieren aller Variablen des TensorFlow-Programms. Variablen werden erst initialisiert, wenn Sie sess.run (init)
aufrufen
Druckausgabe
[ 0. 0.30000001 0.60000002 0.90000004]
Wir brauchen einen Platzhalter, um den Wert des gewünschten Wertes (Lehrerdaten) anzugeben, und wir brauchen auch eine Verlustfunktion.
Misst, wie weit der vom aktuellen Modell ausgegebene Wert von den Lehrerdaten entfernt ist. Verwenden Sie das Standardverlustmodell für die lineare Regression der vom Modell ausgegebenen Werte und der Trainingsdaten. linear_model --y
berechnet den Vektor des Fehlers, den jedes Element bindet, und quadriert den Fehler mit tf.square
. Rufen Sie dann "tf.reduce_sum" auf, um einen einzelnen Skalar zu generieren, der alle Fehler abstrahiert.
>>>y = tf.placeholder(tf.float32)
>>>squared_deltas = tf.square(linear_model - y)
>>>loss = tf.reduce_sum(squared_deltas)
>>>print(sess.run(loss, {x: [1, 2, 3, 4], y: [0, -1, -2, -3]}))
Die Druckausgabe gibt den Wert der Verlustfunktion zurück.
Druckausgabe
23.66
{x: [1, 2, 3, 4], y: [0, -1, -2, -3]}
Betrachten Sie die beiden Werte der Eingabe, wenn W = -1 b = 1
Der Verlust dürfte Null sein.
Sie können tf.assign
verwenden, um das Gewicht und die Vorspannung zu ändern.
>>>fixW = tf.assign(W, [-1.])
>>>fixb = tf.assign(b, [1.])
>>>sess.run([fixW, fixb])
>>>print(sess.run(loss, {x: [1, 2, 3, 4], y: [0, -1, -2, -3]}))
Druckausgabe
0.0
Recommended Posts