Aide à protéger la Grande barrière de corail avec tensorflow sur Kaggle Rejoignez Défi

Problèmes connus

La compilation avec XLA peut considérablement améliorer les performances de vos programmes, mais l'interopérabilité TensorFlow présente un certain nombre d'angles aigus connus.

tf.Variable sur un autre appareil

Message d'erreur: INVALID_ARGUMENT: Trying to access resource <Variable> (defined @ <Loc>) located in device CPU:0 from device GPU:0 l' INVALID_ARGUMENT: Trying to access resource <Variable> (defined @ <Loc>) located in device CPU:0 from device GPU:0

Groupe XLA fonctionne sur un seul appareil, et il ne peut pas lire ou écrire à tf.Variable situé sur un autre appareil. Habituellement, ce message d'erreur indique que la variable n'a pas été placée sur le bon périphérique pour commencer. Le message d'erreur doit spécifier précisément l'emplacement de la variable incriminée.

L'interconversion TensorArray TF/XLA n'est pas prise en charge

Message d'erreur: Support for TensorList crossing the XLA/TF boundary is not implemented en Support for TensorList crossing the XLA/TF boundary is not implemented en Support for TensorList crossing the XLA/TF boundary is not implemented .

XLA soutient tf.TensorArray . Cependant, l'interconversion entre les représentations TF et XLA n'a pas encore été mis en œuvre. Cette erreur se produit souvent lorsque le TensorArray est utilisé à l' intérieur du bloc compilé, mais le dérivé est pris à l' extérieur.

Solution: compiler la portée la plus externe qui prend la dérivée.

TensorFlow tandis que les boucles doivent être délimitées (ou avoir le backprop désactivé)

Message d'erreur: XLA compilation requires a fixed tensor list size. Set the max number of elements. This could also happen if you're using a TensorArray in a while loop that does not have its maximum_iteration set, you can fix this by setting maximum_iteration to a suitable value la XLA compilation requires a fixed tensor list size. Set the max number of elements. This could also happen if you're using a TensorArray in a while loop that does not have its maximum_iteration set, you can fix this by setting maximum_iteration to a suitable value de XLA compilation requires a fixed tensor list size. Set the max number of elements. This could also happen if you're using a TensorArray in a while loop that does not have its maximum_iteration set, you can fix this by setting maximum_iteration to a suitable value .

TF tandis que les boucles créées en utilisant tf.while_loop support rétropropagation par l' accumulation de tous les résultats intermédiaires dans une TensorArray , mais XLA ne supporte que les bornés TensorArray s.

Solution: tous compilés en boucles doivent soit avoir maximum_iterations le jeu de paramètres à une valeur constante connue au moment de la compilation, ou rétropropagation désactivé à l' aide back_prop=False .

Dynamic tf.TensorArray est pas pris en charge

Écrit dans tf.TensorArray(..., dynamic_size=True) ne sont pas compilable avec XLA, en tant que telle écriture nécessitent un nombre inconnu de réaffectations lorsque le tableau dépasse la limite d' origine.

Solution: fournir une connue statiquement lié à vos tableaux.

La génération de nombres aléatoires ignore la graine TF

XLA ignore actuellement les graines TF pour les opérations aléatoires. Cela affecte les opérations aléatoires stateful TF, tels que tf.random.normal ou tf.nn.dropout . XLA se comportera comme si la compilation était ensemencée avec une nouvelle graine unique à chaque exécution au sein du même processus (la première exécution du processus donnera toujours le même résultat).

Solution: utilisez les RNG recommandés tels que tf.random.stateless_uniform ou tf.random.Generator directement.