tutorial example español dense python neural-network keras

python - example - Al armar una CNN, recibo quejas de Keras que no tienen sentido para mí.



tensorflow (2)

Mi forma de entrada se supone que es 100x100. Representa una oración. Cada palabra es un vector de 100 dimensiones y hay 100 palabras como máximo en una oración.

Doy ocho oraciones a la CNN. No estoy seguro de si esto significa que mi forma de entrada debería ser 100x100x8.

Entonces las siguientes líneas

Convolution2D(10, 3, 3, border_mode=''same'', input_shape=(100, 100))

se queja

La entrada 0 es incompatible con la capa convolution2d_1: esperado ndim = 4, encontrado ndim = 3

Esto no tiene sentido para mí ya que mi dimensión de entrada es 2. Puedo superarla cambiando la forma de entrada a (100,100,8). Pero el bit "esperado ndim = 4" simplemente no tiene sentido para mí.

Tampoco puedo ver por qué una capa de convolución de 3x3 con 10 filtros no acepta entradas de 100x100.

Incluso me llegan las quejas sobre el "esperado ndim = 4". Me encuentro con un problema en mi capa de activación. Ahí se queja:

No se puede aplicar softmax a un tensor que no sea 2D o 3D. Aquí, ndim = 4

¿Alguien puede explicar lo que está pasando aquí y cómo solucionarlo? Muchas gracias.


la dimensión que falta para las capas convolucionales 2D es la dimensión del "canal".

Para los datos de imagen, la dimensión del canal es 1 para las imágenes en escala de grises y 3 para las imágenes en color.

En su caso, para asegurarse de que Keras no se queje, puede usar convolución 2D con 1 canal o convolución 1D con 100 canales.

Ref: http://keras.io/layers/convolutional/#convolution2d


Tuve el mismo problema y lo resolví agregando una dimensión para el argumento de channel a input_shape .

Como entiendo tu sugiero la siguiente solución:

Convolution2D(10, 3, 3, border_mode=''same'', input_shape=(100, 100, 1))