Unexpected behavior from `tf.math.greaterEqual`
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
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Ö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