Ayuda a proteger la Gran Barrera de Coral con TensorFlow en Kaggle Únete Challenge

Problemas conocidos

La compilación con XLA puede mejorar en gran medida el rendimiento de sus programas, pero la interoperabilidad de TensorFlow tiene varias esquinas afiladas conocidas.

tf.Variable en un dispositivo diferente

Mensaje de error: INVALID_ARGUMENT: Trying to access resource <Variable> (defined @ <Loc>) located in device CPU:0 from device GPU:0

XLA clúster se ejecuta en exactamente un dispositivo, y no puede leer o escribir en tf.Variable situada en un dispositivo diferente. Por lo general, este mensaje de error indica que la variable no se colocó en el dispositivo correcto para empezar. El mensaje de error debe especificar con precisión la ubicación de la variable infractora.

La interconversión de TensorArray TF / XLA no es compatible

Mensaje de error: Support for TensorList crossing the XLA/TF boundary is not implemented .

XLA apoya tf.TensorArray . Sin embargo, la interconversión entre las representaciones TF y XLA aún no está implementado. Este error a menudo surge cuando el TensorArray se utiliza dentro del bloque compilado, pero el derivado se toma fuera.

Solución: compilar el alcance más exterior que está tomando la derivada.

Los bucles while de TensorFlow deben estar delimitados (o tener backprop inhabilitado)

Mensaje de error: 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, mientras que los bucles creados usando tf.while_loop apoyo backpropagation mediante la acumulación de todos los resultados intermedios en un TensorArray , pero XLA solamente soporta delimitadas TensorArray s.

Solución: todo compilado, mientras que los bucles que o bien tienen maximum_iterations parámetro establecido en un valor constante conocido en tiempo de compilación, o desactivar mediante retropropagación back_prop=False .

Dinámica tf.TensorArray no es compatible

Escrituras en tf.TensorArray(..., dynamic_size=True) no son compilable con XLA, ya que tales escrituras requieren un número desconocido de reasignaciones cuando la matriz supera el original encuadernado.

Solución: proporcionar un conocido estáticamente ligada a sus matrices.

La generación de números aleatorios ignora la semilla TF

XLA actualmente ignora las semillas TF para operaciones aleatorias. Esto afecta a las operaciones aleatorias TF con estado, como tf.random.normal , o tf.nn.dropout . XLA se comportará como si la compilación fuera sembrada con una nueva semilla única en cada ejecución dentro del mismo proceso (la primera ejecución del proceso siempre producirá el mismo resultado).

Solución: utilizar los generadores de números aleatorios recomendados como tf.random.stateless_uniform o la tf.random.Generator directamente.