2016-07-15 8 views
-3
import tensorflow as tf 
a=tf.int32 
b=tf.constant(3) 
a==b 

gibt Fehler statt 'false' des GebensTensorflow vergleichen tf.int32 und tf.constant gibt Fehler

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/framework/dtypes.py", line 248, in __eq__ 
    and self._type_enum == as_dtype(other).as_datatype_enum) 
    File "/usr/local/lib/python3.4/dist-packages/tensorflow/python/framework/dtypes.py", line 536, in as_dtype 
    if key == type_value: 
TypeError: data type not understood 

Warum dies einen Fehler erzeugen. Ich benutze Tensorflow 0.8 Sollte man nicht in der Lage sein, Gleichheit s/w irgendwelche Variablen zu überprüfen.

Was ich versuche, war die Überprüfung zu erreichen, wenn ein Objekt in einer Liste vorhanden ist

a=tf.int32 
b=[tf.constant(3),..other objects] 
if a in b: 
    do_something() 

Antwort

4

Dieser Vergleich nicht sinnvoll ist.

>>> a=tf.int32 
>>> type(a) 
<class 'tensorflow.python.framework.dtypes.DType'> 
>>> print(a) 
<dtype: 'int32'> 

gegen

>>> b=tf.constant(3) 
>>> type(b) 
<class 'tensorflow.python.framework.ops.Tensor'> 
>>> print(b) 
Tensor("Const_1:0", shape=(), dtype=int32) 

Was Sie hier sehen, ist, dass Sie versuchen, eine Art (oder Klasse) mit irgendeiner Form der Instanz dieser Klasse zu vergleichen. Es hat keinen Sinn, das tatsächlich zu tun. Der Fehler wird ausgelöst, weil tf keine Ahnung hat, wie diese Gleichheitsprüfung tatsächlich ausgeführt wird.

aktualisiert

Ich sehe Sie Ihre Antwort aktualisiert, so dass hier die Antwort: Während dies die korrekte Syntax, wenn ein Objekt zu überprüfen, ist in einer Sammlung ist, über meine Antwort immer noch gilt. Die Variable a bezieht sich nicht auf das, was Sie denken. Es enthält einen Verweis auf die tatsächliche Definition des Typs int32. Es gibt keinen Grund, das in einem Tensor zu suchen.

+0

Ich habe versucht zu überprüfen, ob ein Objekt in einer Liste vorhanden ist. (für i in Liste) wenn ich tf.int32 ist und Liste enthält tf.constant (3) bekomme ich einen Fehler wegen dieser Gleichheitsprüfung. Irgendeine Idee, wie ich dieses erreichen kann – Himaprasoon

+0

Da das anderen Leuten helfen könnte, würde ich vorschlagen, dass Sie eine neue Frage für Ihr tatsächliches Problem öffnen. Sie können hier einen Kommentar hinzufügen, damit ich die neue Frage finden kann. Wenn diese Antwort Ihnen geholfen hat, denken Sie bitte darüber nach, es zu akzeptieren. – Dave

+0

Ich muss wirklich überprüfen, ob das Objekt in dieser Liste vorhanden ist. also habe ich iteriert und geprüft, ob das Element 'tf.int32' anstelle von'= 'ist – Himaprasoon