tensorflow / tensorflow/java

Unexpected behavior from `tf.math.greaterEqual`

Abierto
#177 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

System information

  • Have I written custom code (as opposed to using a stock example script provided in TensorFlow):
    Custom code
  • OS Platform and Distribution (e.g., Linux Ubuntu 16.04):
    macOS BigSur 11.1
  • TensorFlow installed from (source or binary):
    TensorFlow Java latest GitHub, based on karl/tensor-ttype

I have the following code snippet.

       Operand<TFloat32> r = tf.random.randomUniform(tf.constant(Shape.of(3,2)), TFloat32.class,   
                                                         RandomUniform.seed(1001L));
      Operand<TFloat32> rate1 = tf.constant(0.5f);
      Operand<TBool> mask = tf.math.greaterEqual(r, rate1);

The generated random sequence (shape 3,2) is:

0,0). 0.028465
0,1). 0.936395
1.0). 0.035310
1,1). 0.230565
2,0). 0.269415
2,1). 0.145439

Describe the current behavior
When I run this code, I get mask values of:

0,0). false
0,1). true
1,0). false
1,1). false
2,0). false
2,1). true

Describe the expected behavior
I expected mask values to be:

0,0). false
0,1). true
1,0). false
1,1). false
2,0). false
2,1). false

The last random number, 0.145439, is less than 0.5.

Code to reproduce the issue
Provide a reproducible test case that is the bare minimum necessary to generate the problem.

try (TestSession session = TestSession.createTestSession(TestSession.Mode.GRAPH)) {
      Ops tf = session.getTF();
       Operand<TFloat32> random = tf.random.randomUniform(tf.constant(Shape.of(3,2), TFloat32.class,   
                                                         RandomUniform.seed(1001L));
      Operand<TFloat32> rate = tf.constant(0.5f);
      Operand<TBool> mask = tf.math.greaterEqual(r, rate);

      System.out.println("******** MASK ***************");
      System.out.println("random:");
      session.print(random);
      System.out.println("rate1:");
      session.print(rate1);
      System.out.println("mask:");
      session.print(mask);
      System.out.println("******** MASK ***************");
}

If I do this code in Python it works as expected:

import tensorflow as tf
a = [
    [0.028465 ,  0.936395],
    [0.035310 , 0.230565],
    [0.269415 , 0.145439]
]
print(a);
rate = 0.5
b = tf.math.greater_equal(a, rate);
print(b)

Output:

[[0.028465, 0.936395], [0.03531, 0.230565], [0.269415, 0.145439]]
tf.Tensor(
[[False  True]
 [False False]
 [False False]], shape=(3, 2), dtype=bool)

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

Comienza con el fragmento de Java y la TestSession en modo GRAPH, y luego compara el tensor generado y el resultado de tf.math.greaterEqual con el ejemplo de Python. Reproduce la discrepancia notificada en el elemento final e identifica si la produce el binding de Java o la configuración de la prueba; se considera terminado cuando el comportamiento está explicado y se ha verificado una prueba de regresión o un cambio correctivo.

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

Evaluación

Stack tecnológico
java, tensorflow
Área
machine-learning
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
38/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.