Esto es definitivamente sobre el rendimiento. Si no se hace un lote por longitud, se realizan cálculos inútiles cuyos resultados se ignoran de todos modos.
Recuerda que un tensor tiene que ser rectangular, no puede tener un borde irregular. (Generaliza esto a dimensiones superiores según sea necesario.) Pero las secuencias tienen diferentes longitudes. El relleno se utiliza para eliminar el borde irregular, pero el cálculo sobre el relleno es inútil. Queremos minimizar el cómputo desperdiciado, por lo que agrupamos por longitud.
Considere el siguiente conjunto de datos de seis secuencias. Cada fila es una secuencia, y cada X
representa un elemento de la secuencia:
X
XXXXX
XX
XX
XXX
X
Recuerde que nuestro CNN corre a lo largo del eje temporal de nuestra secuencia. Para las secuencias por lotes, corremos hasta la longitud de la secuencia más larga de nuestro lote. Cuando las secuencias tienen longitudes diferentes, utilizamos el relleno. Pero si los datos se agrupan de forma diferente, las longitudes totales de los lotes pueden ser diferentes.
Cantidad de trabajo de base (sin relleno, sin lote)
Veamos el trabajo que necesita que hay que hacer. Tenemos que procesar 14 elementos en nuestras 6 secuencias. Si lo hacemos por lotes, podemos acelerar este proceso, pero puede que acabemos haciendo un trabajo extra.
Opción 1: No agrupar por longitudes
Vamos a hacer un lote tal cual, con un tamaño de lote de 2. Usaré .
para representar el relleno.
X....
XXXXX
XX
XX
XXX
X..
Si ejecutamos nuestra CNN en esto, terminamos haciendo 5+2+3=10 unidades de trabajo recorriendo estas secuencias. Eso podría no ser óptimo; ¡mira todo el trabajo innecesario que hicimos en la primera secuencia!
Opción 2: Agrupación por longitud
Agrupemos por longitudes lo mejor posible, manteniendo el tamaño del lote 2.
X
X
XX
XX
XXXXX
XXX..
Esta vez, sólo hacemos 1+2+5=8 unidades de trabajo. La otra opción era un 25% más lenta, perdiendo su tiempo en cálculos que nunca necesitábamos hacer. Se corrió en el acolchado, por lo que acabaríamos tirándolo de todos modos.
Evidentemente, se trata de un ejemplo de juguete. Para conjuntos de datos más grandes, el problema es más extremo, ya que la relación entre las longitudes de las secuencias más largas y las medias en un lote puede ser mayor.