tensorflow / tensorflow/java

Unexpected behavior from `tf.math.greaterEqual`

Offen
#177 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
Java
Sterne
928
Forks
227
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

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)

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit dem Java-Snippet und der TestSession im GRAPH-Modus und vergleiche anschließend den erzeugten Tensor und das Ergebnis von tf.math.greaterEqual mit dem Python-Beispiel. Reproduziere die gemeldete Abweichung beim letzten Element und ermittle, ob sie durch die Java-Bindung oder den Testaufbau verursacht wird; abgeschlossen ist die Aufgabe, wenn das Verhalten erklärt und ein Regressionstest oder eine korrigierende Änderung verifiziert wurde.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java, tensorflow
Bereich
machine-learning
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
38/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.