Unexpected behavior from `tf.math.greaterEqual`
Personne n'a encore pris cette issue.
- Langage dominant
- Java
- Étoiles
- 928
- Forks
- 227
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
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)
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par l’extrait Java et la TestSession en mode GRAPH, puis comparez le tenseur généré et le résultat de tf.math.greaterEqual avec l’exemple Python. Reproduisez l’incohérence signalée sur le dernier élément et déterminez si elle est produite par la liaison Java ou par la configuration du test ; le travail est terminé lorsque le comportement est expliqué et qu’un test de régression ou une correction a été vérifié.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- java, tensorflow
- Domaine
- machine-learning
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 38/100