2016-07-01 6 views
0
import tensorflow as tf 

x = tf.constant(35, name='x') 
y = tf.Variable(x + 5, name='y') 

model = tf.initialize_all_variables() 

with tf.Session() as session: 
    session.run(model) 
    print(session.run(y)) 

Dieser Code erzeugt eine Fehlermeldung, Fehlertyp: Liste der Tensoren, wenn einzelne Tensor erwartetTensor Stromfehler während einem grundlegenden numerischen zusätzlich zu drucken versuchen

, was das Problem sein könnte ???

Systems: Virtualbox: Ubuntu 16.04 xenial, Tensor 0.9.0 fließen, Python-3,5

+0

Ich kann Ihr Problem nicht reproduzieren --- Ihr Code funktioniert für mich und druckt "40". Verwenden Sie zufällig eine interaktive Python-Umgebung? Wenn ja, versuchen Sie vielleicht, Python neu zu starten? –

+0

Nein, ich benutze keine interaktive Python-Umgebung, ich benutze 'Sublime' als Kern-Editor, abgesehen davon gibt es nichts anderes. Ich habe die Datei als 'tensor_test.py' gespeichert und starte sie im Terminal mit dem Basisbefehl 'python tensor_test.py' während die Tensorquelle aktiv ist. –

Antwort

0

Es sieht aus wie Sie einen konzeptionellen Aspekt tensorflow fehlen. Lassen Sie mich zunächst mit einem Codebeispiel Import tensorflow starten als tf

x = tf.constant(35, name='x') 
y = tf.Variable(5, name='y') 
add = tf.add(x,y) 
update = tf.assign(y,add) 

model = tf.initialize_all_variables() 

with tf.Session() as session: 
    session.run(model) 
    print(session.run(y)) 
    print(session.run([add,y])) 
    print(session.run([update,y])) 
    print(session.run([update,y])) 

Dies wird die folgende

5 
40 5 
40 40 
75 75 

So drucken, was los ist? Erstens, x und y sind nicht 35 und 5. Sie sind Tensorflow-Objekte, die Daten enthalten und mit dem Tensorflow-Graph interagieren können. x ist eine Konstante und liefert dem Diagramm den Wert 35, wenn es von Tensorflow angefordert wird. Es ist jedoch nicht gleich 35. y ist eine Variable, der beim Ausführen ein Wert zugewiesen und durch Tensorflow aktualisiert werden kann.

In Ihrem Beispiel setzen Sie den Wert von y auf eine Variable mit einem Anfangswert von x + 5, aber x ist nicht 35. x ist ein Tensorflow-Objekt.

Im obigen Beispiel weisen wir der Variablen y den Wert 5 zu. Wenn wir die Sitzung ausführen und den Wert von y erhalten, ist es 5. Wenn wir den Wert von add erhalten, ist es 35 + 5, aber y hat sich nicht geändert. Wenn wir update ausführen, finden wir, dass der Wert von y wurde auf 40 aktualisiert. Schließlich, wenn wir wieder aktualisieren wir sehen, dass y wurde wieder um 35 erhöht und ist jetzt 75.

Ich hoffe, dies erklärt den Unterschied zwischen klassischen Python-Variablen und -Konstanten und Tensorflow-Variablen und -Konstanten.

Verwandte Themen