¿Qué implementaciones de la capa convolucional utiliza la biblioteca CuDNN para optimizar el rendimiento de la velocidad? Por ejemplo, ¿cambia entre implementaciones dependiendo del tamaño del filtro?

La mayoría de las funciones en la biblioteca CuDNN tienen implementaciones sencillas, excepto la implementación de la operación de convolución, que se transforma en una sola multiplicación de matriz, según este documento de Nvidia cuDNN; primitivas efectivas para el aprendizaje profundo, 2014

La idea básica es convertir la operación de convolución de, digamos un solo filtro, que es esencialmente

  • un movimiento deslizante del filtro sobre los datos de entrada donde en cada posición de la operación de deslizamiento, hacemos una operación de multiplicación y suma de los datos de entrada debajo de la ventana deslizante del filtro con los elementos del filtro, en
  • una operación de multiplicación “duplicando” los datos de entrada, como los datos de entrada debajo del filtro para cada posición se despliegan.

Figura del artículo mencionado anteriormente

Esta idea de desarrollo se basa en este documento a continuación, donde es mucho más claro

Figura de redes neuronales convolucionales de alto rendimiento para el procesamiento de documentos

La salida de la operación de convolución regular se muestra en las dos matrices en la parte superior de la figura. El mismo resultado se obtiene al desplegar la entrada que cae bajo los datos de la ventana deslizante de los filtros como se muestra en la matriz inferior izquierda: los resultados se encuentran en la parte inferior derecha, que es lo mismo que las dos matrices superiores reformadas.

Sí, cambia según el tamaño del núcleo. 4 × 4 y menos usan el filtrado de Winograd mientras que 5 × 5 y más grandes usan el método del teorema de convolución (FFT, multiplicación puntual, iFFT).

También se utilizan optimizaciones generales, como sería con cualquier programa, y ​​nVidia puede aprovechar su profundo conocimiento de la arquitectura subyacente y dedicar mucho tiempo a la optimización de la misma operación, lo que permite a los desarrolladores de marcos centrarse en lo que hacen mejor; facilidad de uso. En consecuencia, la mayoría de los frameworks de hoy en día son muy similares en rendimiento, ya que básicamente son todos front-end de cuDNN.

More Interesting

¿Cómo debe un principiante en Machine Learning enfocar una declaración de problema?

Tengo una nube de puntos y necesito hacerla coincidir con un modelo CAD en una base de datos de ~ 500 modelos. ¿Qué algoritmos podría usar?

¿Está nuestro cerebro conectado para reconocer y admirar la simetría o otros animales también muestran rasgos similares?

¿Cuál es la mejor técnica de aprendizaje automático para clasificar ~ 50,000 imágenes sin etiquetar (2-3% de ruido) en 3 clases diferentes?

¿Qué conjuntos de datos se utilizan como puntos de referencia en los métodos de transcripción de voz / voz y qué métodos tienen los mejores resultados actuales?

¿Cuál es el proceso de reconocimiento de voz (en resumen)?

Cómo aprender los conceptos básicos del aprendizaje automático dentro de una semana para una entrevista de trabajo

Al aplicar redes neuronales para la clasificación binaria, ¿hay algún beneficio para el conjunto de entrenamiento que tiene un número igual de 0 y 1?

¿Es necesario aprender Python para seguir la especialización en cursos de Machine Learning, de Coursera?

¿Es cierto que las redes neuronales son más rápidas en las mujeres?

¿Por qué los académicos usan Matlab / Octave y tan pocos en la industria?

¿Cuál es la diferencia entre SVM y ANN?

¿Cuál es la diferencia entre aprendizaje automático, minería de datos y recuperación de información?

¿Por qué Bayes ingenuo se considera un modelo generativo?

¿Por qué los investigadores de IA se centran solo en problemas de regresión y clasificación?