2016-11-23 10 views
0

Ich habe Keras (Version 1.1.1) LSTM mit Theano als Backend ohne Probleme verwendet. Jetzt möchte ich zu Tensorflow (Version 0.8.0) wechseln und konnte kein einfaches Beispiel zum Arbeiten bekommen. Das Problem kann auf das folgende Code-Snippet reduziert werden, das von this Keras-Tensorflow interface tutorial kopiert wird.Eingabefehler bei Verwendung von Keras LSTM mit Tensorflow

from keras.layers import LSTM 
import tensorflow as tf 

my_graph = tf.Graph() 
with my_graph.as_default(): 
    x = tf.placeholder(tf.float32, shape=(None, 20, 64)) 
    y = LSTM(32)(x) 

Und ich habe folgende Fehlermeldung beim letzten Zeile ausgeführt wird:

File "/home/xxx/local/lib/python2.7/site-packages/Keras-1.1.1-py2.7.egg/keras/engine/topology.py", line 529, in call return self.call(x, mask)

File "/home/xxx/local/lib/python2.7/site-packages/Keras-1.1.1-py2.7.egg/keras/layers/recurrent.py", line 227, in call input_length=input_shape 1)

File "/home/xxx/local/lib/python2.7/site-packages/Keras-1.1.1-py2.7.egg/keras/backend/tensorflow_backend.py", line 1306, in rnn axes = [1, 0] + list(range(2, len(outputs.get_shape()))) File "/usr/local/anaconda/lib/python2.7/site-packages/tensorflow/python/framework/tensor_shape.py", line 462, in len raise ValueError("Cannot take the length of Shape with unknown rank.")

ValueError: Cannot take the length of Shape with unknown rank.

Irgendwelche Vorschläge?

Antwort

0

Sie können Tensorflow nicht so wie Keras mischen. Keras verfolgt die Form seiner Tensoren separat von Tensorflow.

Try x = Input(shape=(20,64))

+0

versucht, mit auch. Es funktioniert nicht. – Joe

+0

Ich habe den obigen Code auf einer anderen Maschine getestet, mit Ubundu 14.04, Tensorflow 0.9.0 und der gleichen Version von Keras. Es läuft ohne Probleme. Mein vorheriger Lauf war auf einer CentOS-Box mit einer niedrigeren Version von Tensorflow. Nicht sicher, ob es OS-Problem oder Tensorflow-Problem ist. Wird nach dem Upgrade von Tensorflow zurück gemeldet. – Joe