tensorflow static_rnn error: la entrada debe ser una secuencia

Estoy tratando de alimentar mis propios datos 3D a un LSTM. Los datos tienen: altura = 365, ancho = 310, tiempo = desconocido / inconsistente, constan de 0 y 1, cada bloque de datos que produce una salida se separa en un solo archivo.

import tensorflow as tf import os from tensorflow.contrib import rnn filename = "C:/Kuliah/EmotionRecognition/Train1/D2N2Sur.txt" hm_epochs = 10 n_classes = 12 n_chunk = 443 n_hidden = 500 data = tf.placeholder(tf.bool, name='data') cat = tf.placeholder("float", [None, n_classes]) weights = { 'out': tf.Variable(tf.random_normal([n_hidden, n_classes])) } biases = { 'out': tf.Variable(tf.random_normal([n_classes])) } def RNN(x, weights, biases): lstm_cell = rnn.BasicLSTMCell(n_hidden, forget_bias=1.0) outputs, states = rnn.static_rnn(lstm_cell, x, dtype=tf.float32) return tf.matmul(outputs[-1], weights['out']) + biases['out'] pred = RNN(data, weights, biases) cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=pred, labels=cat)) optimizer = tf.train.AdamOptimizer(learning_rate=0.001).minimize(cost) correct_pred = tf.equal(tf.argmax(pred, 1), tf.argmax(cat, 1)) accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32)) saver = tf.train.Saver() temp = [[]] d3 = [[]] counter = 0 with tf.Session() as sess: #load #saver.restre(sess, "C:/Kuliah/EmotionRecognition/model.ckpt") sess.run(tf.global_variables_initializer()) with open(filename) as inf: for line in inf: bla = list(line) bla.pop(len(bla) - 1) for index, item in enumerate(bla): if (item == '0'): bla[index] = False else: bla[index] = True temp.append(bla) counter += 1 if counter%365==0: #height 365 temp.pop(0) d3.append(temp) temp = [[]] temp.pop(0) d3.append(temp) batch_data = d3.reshape() sess.run(optimizer, feed_dict={data: d3, cat: 11}) acc = sess.run(accuracy, feed_dict={data: d3, cat: 11}) loss = sess.run(loss, feed_dict={data: d3, cat: 11}) print(acc) print(loss) #save saver.save(sess, "C:/Kuliah/EmotionRecognition/model.ckpt") 

este código me lanza un error:

 Traceback (most recent call last): File "C:/Kuliah/EmotionRecognition/Main", line 31, in  pred = RNN(data, weights, biases) File "C:/Kuliah/EmotionRecognition/Main", line 28, in RNN outputs, states = rnn.static_rnn(lstm_cell, x, dtype=tf.float32) File "C:\Users\Anonymous\AppData\Roaming\Python\Python35\site-packages\tensorflow\python\ops\rnn.py", line 1119, in static_rnn raise TypeError("inputs must be a sequence") TypeError: inputs must be a sequence 

Cuando se llama pred = RNN(data, weights, biases) , el argumento de los data debe ser una secuencia de longitud de la longitud de su RNN. Pero en su caso, es un data = tf.placeholder(tf.bool, name='data') .

Puede probar pred = RNN([data], weights, biases) .

Ver la cadena de documentos del método:

entradas: una lista de longitud T de entradas, cada una un Tensor de forma [batch_size, input_size] , o una tupla anidada de tales elementos.

Si desconoce la longitud de su RNN, debería considerar usar tf.nn.dynamic_rnn .