tensorflow: AttributeError: Das Objekt 'module' hat kein Attribut 'mul'.

73

Ich habe Tensorflow für EINEN Tag verwendet, aber es gibt einige Probleme. Wenn ich Tensorflow importiere, gibt es AttributeError: Das Objekt 'module' hat kein Attribut 'XXXXXX'.

Umgebung

Ich verwende Ubuntu14.04, Python2.7, CUDA Toolkit 8.0 und CuDNN v5. Und Versionen meiner sechs und protobuf sind: Name: sechs Version: 1.10.0 Ort: /usr/local/lib/python2.7/dist-packages Benötigt: Name: protobuf Version: 3.2.0 Ort: / usr / local / lib / python2.7 / dist-packages Benötigt: sechs Setuptools

Hier ist mein Testcode:

import tensorflow as tf
a = tf.placeholder(tf.int16)
b = tf.placeholder(tf.int16)
add = tf.add(a, b)
mul = tf.mul(a, b)
with tf.Session() as sess:
    # Run every operation with variable input
    print "Addition with variables: %i" % sess.run(add, feed_dict={a: 2, b: 3})
    print "Multiplication with variables: %i" % sess.run(mul, feed_dict={a: 2, b: 3})

Ich bekomme diese Ausgabe:

Geben Sie hier die Bildbeschreibung ein

Gibt es ein Problem mit der Tensorflow-Installation? oder andere Probleme?

DanDan
quelle

Antworten:

187

Gemäß den Versionshinweisen zu Tensorflow 1.0.0 ,

tf.mul, tf.subUnd tf.negsind für veraltet tf.multiply, tf.subtractund tf.negative.

Sie werden ersetzen müssen tf.mulmit tf.multiply.

Meuu
quelle
7
Die Dokumentation sagt "veraltet", aber in Wirklichkeit hat TF sie gerade entfernt ...
MaxB
Jep. Sie sind nicht veraltet, sondern werden vollständig entfernt. Vielen Dank für Ihre Antwort, hat mir eine Tonne Zeit gespart!
Karthik Kannan
3

Diese Operation war zuvor in 0.x-Versionen verfügbar. Mit der Veröffentlichung von TF 1.0 wurden wichtige Änderungen an der API eingeführt . Zusätzlich zu

tf.mul, tf.subUnd tf.negsind für veraltet tf.multiply, tf.subtractundtf.negative

Viele andere Funktionen wurden mit folgender Begründung umbenannt und geändert:

Mehrere Python-API-Aufrufe wurden geändert, um NumPy ähnlicher zu werden.

Viele der Skripte, die Sie bereits im Internet oder in den Büchern gefunden haben, funktionieren also nicht. Gute daran ist , dass die Mehrheit von ihnen mit ihrer Migration behoben werden Skript . Es kann mit ausgeführt werden tf_upgrade.py --infile foo.py --outfile foo-upgraded.py. Es wird nicht in der Lage sein, alles zu lösen (Einschränkungen sind hier aufgeführt ), aber Sie sparen viel Arbeit.

Salvador Dali
quelle
0

2.0 Kompatible Antwort :

Die Befehle für tf.multiplydie Migration von Tensorflow 1.x auf 2.x sind nachstehend aufgeführt:

tf.compat.v1.math.multiply, tf.compat.v1.multiply, tf.compat.v2.math.multiply, tf.compat.v2.multiply

Die Befehle für tf.subtractdie Migration von Tensorflow 1.x auf 2.x sind nachstehend aufgeführt:

tf.compat.v1.math.subtract, tf.compat.v1.subtract, tf.compat.v2.math.subtract, tf.compat.v2.subtract

Die Befehle für tf.negativedie Migration von Tensorflow 1.x auf 2.x sind nachstehend aufgeführt:

tf.compat.v1.math.negative, tf.compat.v1.negative, tf.compat.v2.math.negative, 
tf.compat.v2.negative

Weitere Informationen finden Sie in diesem Tensorflow-Migrationshandbuch .

Tensorflow-Unterstützung
quelle
-4

In Python-3 tf.multiplyanstelle von verwenden tf.mul.

Charlie
quelle
3
Was fügt diese Antwort hinzu, die die ursprüngliche Frage nicht abdeckt?
Auf Wiedersehen StackExchange