tensorflow / tensorflow/java

NdArray implementations don't throw IllegalRankException as documented if no coordinates provided

Abierto
#224 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
Java
Estrellas
928
Forks
227
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

Instead, when no coordinates are provided, we return the scalar at (0, 0, ...). Is this an important idiom that we are preserving, or a questionable choice, or simply a bug?

Here's an example of an abstract method of FloatNdArray that is documented to throw IllegalRankException:

 /**
   * Returns the float value of the scalar found at the given coordinates.
   *
   * . . .
   *
   * @param coordinates coordinates of the scalar to resolve
   * @return value of that scalar
   * @throws IndexOutOfBoundsException if some coordinates are outside the limits of their respective dimension
   * @throws IllegalRankException if number of coordinates is not sufficient to access a scalar element
   */
  float getFloat(long... coordinates);

Here's the implementation in FloatDenseNdArray:

  @Override
  public float getFloat(long... indices) {
    return buffer.getFloat(positionOf(indices, true));
  }

But if indices.length == 0, then positionOf does not throw the claimed IllegalRankException:

  long positionOf(long[] coords, boolean isValue) {
    if (coords == null || coords.length == 0) {
      return 0;
    }
    Validator.coordinates(dimensions, coords, isValue);
    return dimensions.positionOf(coords);
  }

Guía de contribución

Abrir la guía de contribución

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.

Línea de trabajo

Comience con el contrato documentado de FloatNdArray.getFloat y compárelo con FloatDenseNdArray.getFloat y positionOf, especialmente con la rama de coordenadas cero. Determine si devolver el escalar en la posición 0 es intencionado o infringe el comportamiento de excepciones documentado; se considera terminado cuando el comportamiento y su documentación coinciden, con la cobertura relevante añadida o actualizada si el proyecto la proporciona.

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

Evaluación

Stack tecnológico
java
Área
machine-learning
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.