quaternion_from_rotation_matrix NaN or +Inf errors

Abierto
#462 6 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
25/100
Tipo de issue
Error
Claridad
Necesita aclaración
Estado de actividad
Estancado
Stack tecnológico
python

Línea de trabajo

Empieza con tensorflow_graphics/geometry/transformation/quaternion.py, especialmente con la lógica de sqrt-of-trace alrededor de la línea 315 y las llamadas a safe_ops.safe_unsigned_div. Reproduce NaN o +Inf con la conversión de matriz de rotación 6D indicada y las comprobaciones de depuración de TensorFlow Graphics. Se considera terminado determinar si el fallo se debe a una inestabilidad numérica o a un bug, y documentar o corregir la causa confirmada.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

I am trying to convert a 6D continuous representation of a rotation matrix into an axis-angle representation in a network. During backprop, I can occasionally encounter NaNs / +Inf. I was able to determine the source is quaternion_from_rotation_matrix by using a combination of tf.debugging.enable_check_numerics()and the tensorflow_graphics debugging mode.

Sometimes the tfg debugger catches an improperly normalized rotation matrix (i.e., assert_rotation_matrix_normalized), but other times it does not and quaternion_from_rotation_matrix errors in one of the safe_ops.safe_unsigned_div ops or when computing the sqrt of the trace where the trace < -1 by a very small delta.

In converting the continuous representation to a rotation matrix, I'm using an implementation very similar to this one.

Do you have any idea if this is a bug or if I might be encountering some kind of numerical instability? I am working on a repro but having some trouble freezing the model state when the error occurs to extract the bad rotation matrix.

Lenguaje dominante
Python
Estrellas
2.8k
Forks
374
Merge medio
5 d 9 h
PR fusionados (30 d)
1

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de tensorflow/graphics

Todos los issues de tensorflow/graphics

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.