2017-09-21 3 views
2

Ich möchte wissen, wie Bilder verarbeitet werden, bevor sie als Eingabe für ein bidirektionales LSTM eingegeben werden. Ich bekomme immer diese Fehlermeldung, wenn ich mich Code ausführen:Verwenden von Bildern als Eingabe für ein bidirektionales LSTM-Netzwerk

AttributeError: 'list' object has no attribute 'get_shape' 

aus dieser Zeile:

outputs, _, _ = tf.nn.bidirectional_dynamic_rnn(lstm_fw_cell, lstm_bw_cell, x, dtype=tf.float32) 

Hier ist ein Teil meines Codes relevant für das Problem:

def bi_rnn(features, labels, mode): 
    x = tf.unstack(features, num_inputs, 1) 
    ... # cell initialization 
    # Get lstm cell output 
    try: 
     outputs, _, _ = tf.nn.bidirectional_dynamic_rnn(lstm_fw_cell, lstm_bw_cell, x, dtype=tf.float32) 

... 

def serving_input_fn(): 
    feature_placeholders = { 
     'features': tf.placeholder(tf.float32, [None, num_inputs]) 
    } 
    features = { 
     key: tf.expand_dims(tensor, -1) for key, tensor in feature_placeholders.items() 
    } 
    features = tf.squeeze(features, axis=[2]) 
    return InputFnOps(features, None, feature_placeholders) 

def read_dataset(img_paths, labels): 
    def _input_fn(): 
     ... # reading image paths omitted 
     image_files = tf.image.decode_png(image_files) 
     image_files = tf.image.resize_images(image_files, [1024, 128]) 
     image_files = evaluate_images(image_files) 
     ... # labels part omitted 
     return tf.convert_to_tensor(np.array(image_files)), labels2 
    return _input_fn 
+0

Ich kann den genauen Fehler nicht mit dem bereitgestellten Code und Fehler verfolgen (eine vollständige Stack-Trace ist in der Regel nützlicher als nur ein Fehler), aber meine Vermutung wäre, dass Sie eine Python-Liste übergeben, wo die Methode erwartet Tensor. – iga

+0

Hier ist der Kern den Code und die Stacktrace enthält https://gist.github.com/selcouthlyBlue/ee06c170ea22ee82695a219e871f9c2c –

+0

Nicht sicher, ob dies das Problem ist, aber die doc für bidirectional_dynamic_rnn erfordert 'inputs' ('X' in Ihrem Fall) ein Tensor oder ein Tupel von Tensors zu sein. In dem Quellcode ist es eine Liste (wie von 'tf.unstack' zurückgegeben). Ich bin mir nicht sicher, warum Sie den Anruf zu 'tf.unstack' dort sogar brauchen? – iga

Antwort

0

ich ziemlich viel gab dieses schon auf und machte something else arbeiten. Es verwendet nicht die TFLearn-Funktionen im Gegensatz zu diesem. Die letzte, an der ich gerade arbeite, hat ein Problem, das Sie sehen können: here.

Verwandte Themen