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
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
Hier ist der Kern den Code und die Stacktrace enthält https://gist.github.com/selcouthlyBlue/ee06c170ea22ee82695a219e871f9c2c –
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