Il polimorfismo di forma in Jax può portare a diversi errori comuni a causa della sua gestione delle dimensioni simboliche nelle forme dell'array. Ecco alcuni di questi errori:
1. Ad esempio, provare ad aggiungere array con forme `(v,)` e `(4,)` si tradurranno in un errore perché `V` è una dimensione simbolica che potrebbe non essere sempre uguale a 4 [1] [2].
2. Errori di controllo della forma: operazioni come la moltiplicazione della matrice richiedono vincoli di forma specifici, come avere matrici quadrate. Se le dimensioni simboliche non soddisfano questi vincoli (ad esempio, usando `(v, 4)` invece di `(v, v)`), Jax solleverà errori [1] [2].
3. Operazioni di dimensione inconcludente: i confronti che coinvolgono dimensioni simboliche possono essere inconcludenti se non possono essere risolti a un valore booleano per tutti i possibili valori delle dimensioni simboliche. Ciò porta a errori come `InconclusivevedImensionOperation` quando si tenta di confrontare le forme simboliche [1].
4. Errori di asserzione di forma: Jax presuppone che le variabili di dimensione siano numeri interi severamente positivi. Se le forme di input effettive non soddisfano questi presupposti (ad esempio, una forma come `(b, b, 2*d)` quando `d` non è un numero intero), Jax aumenterà errori durante l'esecuzione [1] [2].
Questi errori evidenziano la necessità di gestire attentamente le dimensioni simboliche quando si utilizza il polimorfismo di forma in Jax.
Citazioni:[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-polymorfism
[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/elquent/polymorphism-why-hould-i-violato-database-design?reply=103880