2016-11-23 6 views
0

Я использую Keras (версия 1.1.1) LSTM с Theano в качестве backend без проблем. Теперь я хотел бы переключиться на Tensorflow (версия 0.8.0) и не смог получить простой пример для работы. Проблема может быть сведена к следующему фрагменту кода, скопированному с this Keras-Tensorflow interface tutorial.Ошибка ввода формы при использовании Keras LSTM с 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) 

И я получил следующее сообщение об ошибке, когда последняя строка выполняется:

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.

Есть предложения?

ответ

0

Вы не можете смешивать тензорный поток как keras, как это. Keras отслеживает форму своих тензоров отдельно от того, как работает тензор.

Попробуйте использовать x = Input(shape=(20,64))

+0

Пробовал это тоже. Это не работает. – Joe

+0

Просто попробовал код на другой машине, с Ubundu 14.04, Tensorflow 0.9.0 и той же версией Keras. Он работает без проблем. Мой предыдущий запуск был в коробке CentOS с более низкой версией Tensorflow. Не уверен, что проблема с ОС или проблема с Tensorflow. Откроется отчет после обновления Tensorflow. – Joe

 Смежные вопросы

  • Нет связанных вопросов^_^