Keras: input_shape = train_data.shape produce “índice de lista fuera de rango”

Quiero usar Keras para construir una red CNN-LSTM. Sin embargo, tengo problemas para encontrar la forma correcta para el parámetro input_shape la primera capa.

My train_data es un ndarray de la forma (1433, 32, 32) ; 1433 imágenes de tamaño 32×32.

Como se encuentra en este ejemplo , intenté usar input_shape=train_data.shape[1:] , lo que resulta en el mismo error que input_shape=train_data.shape :

IndexError: índice de lista fuera de rango

El código relevante es:

 train_data, train_labels = get_training_data() # train_data = train_data.reshape(train_data.shape + (1,)) model = Sequential() model.add(TimeDistributed(Conv2D( CONV_FILTER_SIZE[0], CONV_KERNEL_SIZE, activation="relu", padding="same"), input_shape=train_data.shape[1:])) 

Todos los resultados que encontré para este error se produjeron bajo diferentes circunstancias; no a través de input_shape . Entonces, ¿cómo tengo que dar forma a mi entrada? ¿Tengo que buscar el error en algún lugar completamente diferente?

Actualización: error completo:

 Traceback (most recent call last): File "trajecgen_keras.py", line 131, in  tf.app.run() File "/home/.../lib/python3.5/site-packages/tensorflow/python/platform/app.py", line 124, in run _sys.exit(main(argv)) File "trajecgen_keras.py", line 85, in main input_shape=train_data.shape)) File "/home/.../lib/python3.5/site-packages/keras/models.py", line 467, in add layer(x) File "/home/.../lib/python3.5/site-packages/keras/engine/topology.py", line 619, in __call__ output = self.call(inputs, **kwargs) File "/home/.../lib/python3.5/site-packages/keras/layers/wrappers.py", line 211, in call y = self.layer.call(inputs, **kwargs) File "/home/.../lib/python3.5/site-packages/keras/layers/convolutional.py", line 168, in call dilation_rate=self.dilation_rate) File "/home/.../lib/python3.5/site-packages/keras/backend/tensorflow_backend.py", line 3335, in conv2d data_format=tf_data_format) File "/home/.../lib/python3.5/site-packages/tensorflow/python/ops/nn_ops.py", line 753, in convolution name=name, data_format=data_format) File "/home/.../lib/python3.5/site-packages/tensorflow/python/ops/nn_ops.py", line 799, in __init__ input_channels_dim = input_shape[num_spatial_dims + 1] File "/home/../lib/python3.5/site-packages/tensorflow/python/framework/tensor_shape.py", line 521, in __getitem__ return self._dims[key] IndexError: list index out of range 

Cuando se utiliza una capa TimeDistributed combinada con una capa Conv2D , parece que input_shape requiere al menos una tupla de longitud 4: input_shape = (number_of_timesteps, height, width, number_of_channels) .

Podría intentar modificar su código como este, por ejemplo:

 model = Sequential() model.add(TimeDistributed(Conv2D( CONV_FILTER_SIZE[0], CONV_KERNEL_SIZE, activation="relu", padding="same"), input_shape=(None, 32, 32, 1)) 

Más información aquí .