Pregunta

Estoy cautivado por los autoencoders y realmente me gusta la idea de la convolución. Sin embargo, parece que tanto theano como tensorflow solo admiten conv2d para pasar de una matriz de 2D-RGB (n matrices 3D) a una matriz de imágenes de mayor profundidad. Eso tiene sentido de las matemáticas tradicionales de producto tensor, c_ijkl = sum {a_ijk*b_klm}, pero significa que es difícil 'desconcar' una imagen.

En ambos casos, si tengo una imagen (en #batch, profundidad, altura, forma de ancho), puedo hacer un convivir para obtener (#batch, num_filters, altura/k, ancho/k). Realmente me gustaría hacer lo contrario, como pasar de (#batch, some_items, altura/k, ancho/k) a (#batch, profundidad, altura, ancho).

TensorFlow tuvo la función DECONV2D oculta durante un tiempo (en 0.6, creo, indocumentado), pero me gustaría saber si hay un truco de matemáticas que pueda usar para obtener una salida más grande en las últimas dos dimensiones después de una convolución que la entrada . Me conformaría con una serie de operaciones diferenciables, como Conv -> cambiar el tamaño, pero quiero evitar hacer una densa multiplicación de matriz -> cambiar el tamaño como lo he estado haciendo hasta ahora.

Editar: a partir de hoy (2016/02/17) Tensorflow 0.7 tiene el método TF.depth_to_space, que ayuda enormemente en este esfuerzo. (https://www.tensorflow.org/api_docs/python/tf/deptth_to_space) Todavía me encantaría una solución basada en el theo, para completar mi comprensión del material.

¿Fue útil?

Solución

Las cosas han cambiado en TensorFlow desde que se hizo esta pregunta, pero aquí hay un enlace a hacer conv2d_transpose. Creo que eso es lo que estás buscando

Otros consejos

Tal vez eche un vistazo a este correo. Puede hacer una convolución que produzca una salida de tamaño similar y luego "no cooline" esos mapas de características.

No estoy seguro si está buscando pesos de filtro en la capa deconvolutiva que se vinculen con la capa convolucional correspondiente, pero cualquiera es posible en lasaña que se ejecuta en theo. Una implementación desatada de la capa deconvolutiva que genera una imagen más grande que su entrada: https://groups.google.com/forum/?hl=en#!topic/lasagne-users/9h6-mmnkhx0

Licenciado bajo: CC-BY-SA con atribución
scroll top