Lo hice yo mismo y, sinceramente, sugeriría hacerlo primero “a mano”, ya que te hará comprender lo que está sucediendo. Te sugiero el muy buen tutorial Danijar Hafner – Longitudes de secuencia variables en TensorFlow. El código en sí puede estar un poco desactualizado, pero puedes entender el principio.
El punto es, como dijiste, usar una matriz de 0 (ver a continuación por qué 0 es un buen valor para el relleno), y considerar solo valores que no sean 0 (es decir, datos reales). Como se ha dicho, la dimensión de este vector no tiene nada que ver con su tamaño de incrustación. En algún momento se elige que se ajuste a una oración completa para que pueda elegir algo como 20-30. Esto dependerá de su necesidad y tendrá consecuencias en su rendimiento.
Usted ya señaló que esto es un gran desperdicio. Y, de hecho, no solo de la memoria sino también del tiempo de procesamiento, ya que TensorFlow de alguna manera procesará el valor de relleno (pero “ignorará” los resultados). La forma más inteligente de hacerlo se llama bucketing. Aquí se explica: Modelos de secuencia a secuencia | TensorFlow. Explicar el uso de bucketing aquí sería una pobre reformulación de este tutorial, será mejor que lo leas 🙂
- ¿Qué opinas del TensorFlow Eager en comparación con Pytorch?
- ¿Se podría denominar al PageRank como un algoritmo de aprendizaje automático?
- ¿Has utilizado Google Translate recientemente? ¿Cómo es la calidad de la traducción con su nueva traducción automática neuronal? ¿Cómo es para cualquier par de idiomas?
- ¿Necesito tener grupos similares en una regresión de diferencia en diferencia?
- ¿Puede la red neuronal convolucional reconocer un objeto en cualquier condición?
No lo dudes si tienes preguntas. Podría indicarle que implemente el código, pero me resulta mucho más complicado entender el tutorial.
Espero eso ayude
pltrdy
Acerca del relleno 0: Lo bueno del relleno 0 es que facilita la obtención de la máscara. El objetivo de una máscara es ser 1 para datos reales y 0 para relleno. Luego puede usarlo para “ignorar” los valores de relleno. Resulta que, a partir de sus datos x, la máscara es `mask = tf.sign (x)` porque el signo (x_i) es: -1 si x_i <0; 0 si x_i = 0; y 1 si x_i = 0.