由于阵列形状中的符号维度的处理,JAX中的形状多态性可能导致几个常见的错误。以下是其中一些错误:
1。不兼容的广播形状:使用形状多态性时,如果符号尺寸与预期的形状不匹配,则添加或矩阵乘法之类的操作可能会失败。例如,尝试使用形状添加数组`(v,)`and'(4,)`将导致错误,因为``v'是一个符号维度,可能并不总是等于4 [1] [2]。
2。形状检查错误:诸如矩阵乘法之类的操作需要特定的形状约束,例如具有方形矩阵。如果符号维度不满足这些约束(例如,使用`(v,4)`而不是`(v,v)`),JAX会引起错误[1] [2]。
3。不确定的维度操作:如果无法解决符号维度的所有可能值,涉及符号维度的比较可能是不确定的。当试图比较符号形状时,这会导致诸如“ inconclusivedimensiveoperation”之类的错误[1]。
4。形状断言错误:JAX假设维数变量是严格的正整数。如果实际输入形状不满足这些假设(例如,当`d` d`不是整数时)之类的形状,则jax会在执行过程中增加错误[1] [2]。
这些错误突出了在使用JAX中使用形状多态性时仔细管理符号维度的必要性。
引用:[1] https://docs.jax.dev/en/latest/export/shape_poly.html
[2] https://github.com/google/jax/blob/main/jax/jax/experiention/jax2tf/readme.md
[3] https://docs.jax.dev/en/latest/notebooks/thinking_in_jax.html
[4] https://stackoverflow.com/questions/65934509/Errors-in-in-Polymormormorplism
[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-------------database-database-design?reply = 103880