El polimorfismo de forma en Jax puede conducir a varios errores comunes debido a su manejo de dimensiones simbólicas en formas de matriz. Estos son algunos de estos errores:
1. Formas incompatibles para la transmisión: cuando se usa el polimorfismo de forma, las operaciones como la adición o la multiplicación de la matriz pueden fallar si las dimensiones simbólicas no coinciden con las formas esperadas. Por ejemplo, tratar de agregar matrices con formas `(V,)` y `(4,)` dar como resultado un error porque `V` es una dimensión simbólica que puede no siempre igualar 4 [1] [2].
2. Errores de verificación de forma: las operaciones como la multiplicación de la matriz requieren restricciones de forma específicas, como tener matrices cuadradas. Si las dimensiones simbólicas no satisfacen estas restricciones (por ejemplo, usando `(V, 4)` en lugar de `(V, V)`), Jax aumentará los errores [1] [2].
3. Operaciones de dimensiones no concluyentes: las comparaciones que involucran dimensiones simbólicas pueden no ser concluyentes si no pueden resolverse a un valor booleano para todos los valores posibles de las dimensiones simbólicas. Esto lleva a errores como 'incomclusedImensencionOperation' cuando se trata de comparar formas simbólicas [1].
4. Errores de afirmación de forma: Jax supone que las variables de dimensión son enteros estrictamente positivos. Si las formas de entrada reales no satisfacen estos supuestos (por ejemplo, una forma como `(b, b, 2*d)` cuando `d` no es un entero), Jax aumentará los errores durante la ejecución [1] [2].
Estos errores resaltan la necesidad de manejar cuidadosamente las dimensiones simbólicas al usar el polimorfismo de forma en Jax.
Citas:[1] https://docs.jax.dev/en/latest/export/shape_poly.html
[2] https://github.com/google/jax/blob/main/jax/experimental/jax2tf/readme.md
[3] https://docs.jax.dev/en/latest/notebooks/thinking_in_jax.html
[4] https://stackoverflow.com/questions/65934509/errors-in-polymorphism
[5] https://github.com/google/jax/discussions/15995
[6] https://docs.jax.dev/en/latest/debugging/index.html
[7] https://jax.readthedocs.io/en/latest/errors.html
[8] https://laracasts.com/discuss/channels/eloquent/polymorphism-why-should-i-violate-database-Design?reply=103880