O polimorfismo de forma no JAX pode levar a vários erros comuns devido ao manuseio de dimensões simbólicas em formas de matriz. Aqui estão alguns desses erros:
1. Formas incompatíveis para transmissão: ao usar o polimorfismo de forma, operações como adição ou multiplicação da matriz podem falhar se as dimensões simbólicas não corresponderem às formas esperadas. Por exemplo, tentar adicionar matrizes com formas `(v,)` e `(4) resultará em um erro porque` v` é uma dimensão simbólica que nem sempre pode ser igual a 4 [1] [2].
2. Erros de verificação de forma: operações como a multiplicação da matriz requerem restrições de forma específicas, como ter matrizes quadradas. Se as dimensões simbólicas não satisfazem essas restrições (por exemplo, usando `(v, 4)` em vez de `(v, v)`), Jax levantará erros [1] [2].
3. Operações inconclusivas de dimensão: as comparações envolvendo dimensões simbólicas podem ser inconclusivas se não puderam ser resolvidas com um valor booleano para todos os valores possíveis das dimensões simbólicas. Isso leva a erros como `inconclusivedImensensoperation` ao tentar comparar formas simbólicas [1].
4. Erros de afirmação de forma: Jax assume que as variáveis de dimensão são números inteiros estritamente positivos. Se as formas reais de entrada não satisfazem essas suposições (por exemplo, uma forma como `(b, b, 2*d)` quando `d` não é um número inteiro), Jax levantará erros durante a execução [1] [2].
Esses erros destacam a necessidade de gerenciar cuidadosamente as dimensões simbólicas ao usar o polimorfismo de forma no JAX.
Citações:[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-dsign?reply=103880