From 42c6f586d75380f04e592016310472c9ae84d78f Mon Sep 17 00:00:00 2001 From: Raffi Khatchadourian Date: Tue, 30 Jan 2024 22:40:24 -0500 Subject: [PATCH 01/11] Switch `gradient()` to return the target. Instead of the sources. --- .../com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java | 2 +- com.ibm.wala.cast.python.ml/data/tensorflow.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java b/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java index ad7ed7c16..2de7ccf27 100644 --- a/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java +++ b/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java @@ -262,7 +262,7 @@ public void testTf2() testTf2("tf2_test_reduce_mean.py", "f", 1, 1, 2); testTf2("tf2_test_reduce_mean.py", "g", 1, 1, 2); testTf2("tf2_test_reduce_mean.py", "h", 1, 1, 2); - testTf2("tf2_test_gradient.py", "f", 1, 1, 2); + testTf2("tf2_test_gradient.py", "f", 0, 0); // NOTE: Change to 1 parameter once https://github.com/wala/ML/issues/135 is fixed. testTf2("tf2_test_gradient2.py", "f", 1, 1, 2); testTf2("tf2_test_multiply.py", "f", 1, 1, 2); testTf2("tf2_test_multiply2.py", "f", 1, 1, 2); diff --git a/com.ibm.wala.cast.python.ml/data/tensorflow.xml b/com.ibm.wala.cast.python.ml/data/tensorflow.xml index c6d532d53..d96dd509b 100644 --- a/com.ibm.wala.cast.python.ml/data/tensorflow.xml +++ b/com.ibm.wala.cast.python.ml/data/tensorflow.xml @@ -754,7 +754,7 @@ - + From 74774adb221b542fb15c9090bbb1c962b1f661e0 Mon Sep 17 00:00:00 2001 From: Raffi Khatchadourian Date: Tue, 30 Jan 2024 22:44:35 -0500 Subject: [PATCH 02/11] Apply spotless. --- .../ibm/wala/cast/python/ml/test/TestTensorflowModel.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java b/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java index 2de7ccf27..b10b17c9f 100644 --- a/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java +++ b/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java @@ -262,7 +262,11 @@ public void testTf2() testTf2("tf2_test_reduce_mean.py", "f", 1, 1, 2); testTf2("tf2_test_reduce_mean.py", "g", 1, 1, 2); testTf2("tf2_test_reduce_mean.py", "h", 1, 1, 2); - testTf2("tf2_test_gradient.py", "f", 0, 0); // NOTE: Change to 1 parameter once https://github.com/wala/ML/issues/135 is fixed. + testTf2( + "tf2_test_gradient.py", + "f", + 0, + 0); // NOTE: Change to 1 parameter once https://github.com/wala/ML/issues/135 is fixed. testTf2("tf2_test_gradient2.py", "f", 1, 1, 2); testTf2("tf2_test_multiply.py", "f", 1, 1, 2); testTf2("tf2_test_multiply2.py", "f", 1, 1, 2); From cf153105ad0d7a794dc683508f38722cf0b3839e Mon Sep 17 00:00:00 2001 From: Raffi Khatchadourian Date: Tue, 30 Jan 2024 22:44:47 -0500 Subject: [PATCH 03/11] Add new test. Should fail. --- .../com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java | 1 + 1 file changed, 1 insertion(+) diff --git a/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java b/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java index b10b17c9f..58f08341e 100644 --- a/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java +++ b/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java @@ -259,6 +259,7 @@ public void testTf2() testTf2("tf2_test_add5.py", "f", 1, 1, 2); testTf2("tf2_test_add6.py", "f", 1, 1, 2); testTf2("multigpu_training.py", "run_optimization", 2, 4, 2, 3); + testTf2("multigpu_training.py", "average_gradients", 1, 1, 2); testTf2("tf2_test_reduce_mean.py", "f", 1, 1, 2); testTf2("tf2_test_reduce_mean.py", "g", 1, 1, 2); testTf2("tf2_test_reduce_mean.py", "h", 1, 1, 2); From 894b28c5291925b7e0b03934827ecb7d80d3125e Mon Sep 17 00:00:00 2001 From: Raffi Khatchadourian Date: Tue, 30 Jan 2024 23:10:00 -0500 Subject: [PATCH 04/11] Add `tf.nn.sparse_softmax_cross_entropy_with_logits()`. --- .../cast/python/ml/test/TestTensorflowModel.java | 1 + com.ibm.wala.cast.python.ml/data/tensorflow.xml | 8 ++++++++ ...st_sparse_softmax_cross_entropy_with_logits.py | 15 +++++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 com.ibm.wala.cast.python.test/data/tf2_test_sparse_softmax_cross_entropy_with_logits.py diff --git a/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java b/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java index 58f08341e..ef51df070 100644 --- a/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java +++ b/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java @@ -271,6 +271,7 @@ public void testTf2() testTf2("tf2_test_gradient2.py", "f", 1, 1, 2); testTf2("tf2_test_multiply.py", "f", 1, 1, 2); testTf2("tf2_test_multiply2.py", "f", 1, 1, 2); + testTf2("tf2_test_sparse_softmax_cross_entropy_with_logits.py", "f", 1, 1, 2); } private void testTf2( diff --git a/com.ibm.wala.cast.python.ml/data/tensorflow.xml b/com.ibm.wala.cast.python.ml/data/tensorflow.xml index d96dd509b..20a876a74 100644 --- a/com.ibm.wala.cast.python.ml/data/tensorflow.xml +++ b/com.ibm.wala.cast.python.ml/data/tensorflow.xml @@ -75,6 +75,8 @@ + + @@ -697,6 +699,12 @@ + + + + + + diff --git a/com.ibm.wala.cast.python.test/data/tf2_test_sparse_softmax_cross_entropy_with_logits.py b/com.ibm.wala.cast.python.test/data/tf2_test_sparse_softmax_cross_entropy_with_logits.py new file mode 100644 index 000000000..9d1c009fb --- /dev/null +++ b/com.ibm.wala.cast.python.test/data/tf2_test_sparse_softmax_cross_entropy_with_logits.py @@ -0,0 +1,15 @@ +# from https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/nn/sparse_softmax_cross_entropy_with_logits + +import tensorflow as tf + + +def f(a): + pass + + +logits = tf.constant([[2., -5., .5, -.1], + [0., 0., 1.9, 1.4], + [-100., 100., -100., -100.]]) +labels = tf.constant([0, 3, 1]) +f(tf.nn.sparse_softmax_cross_entropy_with_logits( + labels=labels, logits=logits.numpy())) From a4e80fb96036bdfa32629e149853ba7057dbe918 Mon Sep 17 00:00:00 2001 From: Raffi Khatchadourian Date: Wed, 31 Jan 2024 09:41:39 -0500 Subject: [PATCH 05/11] Revert "Switch `gradient()` to return the target." This reverts commit 42c6f586d75380f04e592016310472c9ae84d78f. We don't need it. --- com.ibm.wala.cast.python.ml/data/tensorflow.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.ibm.wala.cast.python.ml/data/tensorflow.xml b/com.ibm.wala.cast.python.ml/data/tensorflow.xml index 20a876a74..224995705 100644 --- a/com.ibm.wala.cast.python.ml/data/tensorflow.xml +++ b/com.ibm.wala.cast.python.ml/data/tensorflow.xml @@ -762,7 +762,7 @@ - + From ade8bb2b7289d3e8763444c06830ddc518e79f78 Mon Sep 17 00:00:00 2001 From: Raffi Khatchadourian Date: Wed, 31 Jan 2024 10:03:46 -0500 Subject: [PATCH 06/11] Mark test that tests https://github.com/wala/ML/issues/136. --- .../ibm/wala/cast/python/ml/test/TestTensorflowModel.java | 6 +++++- com.ibm.wala.cast.python.test/data/tf2_test_tensor_list3.py | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java b/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java index ef51df070..e21ff4a2d 100644 --- a/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java +++ b/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java @@ -217,7 +217,11 @@ public void testTf2() testTf2("tf2_test_dataset10.py", "add", 2, 2, 2, 3); testTf2("tf2_test_tensor_list.py", "add", 2, 2, 2, 3); testTf2("tf2_test_tensor_list2.py", "add", 0, 0); - testTf2("tf2_test_tensor_list3.py", "add", 0, 0); + testTf2( + "tf2_test_tensor_list3.py", + "add", + 0, + 0); // NOTE: Change to 2, 2, 2, 3 once https://github.com/wala/ML/issues/136 is fixed. testTf2("tf2_test_tensor_list4.py", "add", 0, 0); testTf2("tf2_test_tensor_list5.py", "add", 0, 0); testTf2("tf2_test_model_call.py", "SequentialModel.__call__", 1, 1, 3); diff --git a/com.ibm.wala.cast.python.test/data/tf2_test_tensor_list3.py b/com.ibm.wala.cast.python.test/data/tf2_test_tensor_list3.py index fb674b2e0..d00832a2f 100644 --- a/com.ibm.wala.cast.python.test/data/tf2_test_tensor_list3.py +++ b/com.ibm.wala.cast.python.test/data/tf2_test_tensor_list3.py @@ -1,3 +1,5 @@ +# Test https://github.com/wala/ML/issues/136. + import tensorflow as tf From a2cc3308d66a0d1abbbdb7275f72b0f8a943ddb1 Mon Sep 17 00:00:00 2001 From: Raffi Khatchadourian Date: Wed, 31 Jan 2024 10:04:01 -0500 Subject: [PATCH 07/11] Apply spotless. --- .../tf2_test_sparse_softmax_cross_entropy_with_logits.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/com.ibm.wala.cast.python.test/data/tf2_test_sparse_softmax_cross_entropy_with_logits.py b/com.ibm.wala.cast.python.test/data/tf2_test_sparse_softmax_cross_entropy_with_logits.py index 9d1c009fb..86a0dd604 100644 --- a/com.ibm.wala.cast.python.test/data/tf2_test_sparse_softmax_cross_entropy_with_logits.py +++ b/com.ibm.wala.cast.python.test/data/tf2_test_sparse_softmax_cross_entropy_with_logits.py @@ -7,9 +7,8 @@ def f(a): pass -logits = tf.constant([[2., -5., .5, -.1], - [0., 0., 1.9, 1.4], - [-100., 100., -100., -100.]]) +logits = tf.constant( + [[2.0, -5.0, 0.5, -0.1], [0.0, 0.0, 1.9, 1.4], [-100.0, 100.0, -100.0, -100.0]] +) labels = tf.constant([0, 3, 1]) -f(tf.nn.sparse_softmax_cross_entropy_with_logits( - labels=labels, logits=logits.numpy())) +f(tf.nn.sparse_softmax_cross_entropy_with_logits(labels=labels, logits=logits.numpy())) From 8d8fde564b682cf3aa18c786894485f98884f6ec Mon Sep 17 00:00:00 2001 From: Raffi Khatchadourian Date: Wed, 31 Jan 2024 10:38:25 -0500 Subject: [PATCH 08/11] Update tests to reflect new API. --- .../com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java b/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java index e21ff4a2d..b3e87d486 100644 --- a/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java +++ b/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java @@ -238,10 +238,10 @@ public void testTf2() "neural_network.py", "cross_entropy_loss", 1, - 4, + 8, 3); // NOTE: Change to 2 tensor parameters once https://github.com/wala/ML/issues/127 is // fixed. Values 2 and 3 will correspond to the tensor parameters. - testTf2("neural_network.py", "run_optimization", 2, 2, 2, 3); + testTf2("neural_network.py", "run_optimization", 2, 3, 2, 3); testTf2( "neural_network.py", "accuracy", From 3031da540980b9f210cc3e744f026b2068d5f72c Mon Sep 17 00:00:00 2001 From: Raffi Khatchadourian Date: Wed, 31 Jan 2024 10:38:59 -0500 Subject: [PATCH 09/11] Update test in light of https://github.com/wala/ML/issues/136. --- .../com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java b/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java index b3e87d486..921ee9004 100644 --- a/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java +++ b/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java @@ -263,7 +263,7 @@ public void testTf2() testTf2("tf2_test_add5.py", "f", 1, 1, 2); testTf2("tf2_test_add6.py", "f", 1, 1, 2); testTf2("multigpu_training.py", "run_optimization", 2, 4, 2, 3); - testTf2("multigpu_training.py", "average_gradients", 1, 1, 2); + testTf2("multigpu_training.py", "average_gradients", 0, 0); // NOTE: Change to 1, 1, 2 once https://github.com/wala/ML/issues/136 is fixed. testTf2("tf2_test_reduce_mean.py", "f", 1, 1, 2); testTf2("tf2_test_reduce_mean.py", "g", 1, 1, 2); testTf2("tf2_test_reduce_mean.py", "h", 1, 1, 2); From b01fbca433ae660a02a705474c993515fb3d91a8 Mon Sep 17 00:00:00 2001 From: Raffi Khatchadourian Date: Wed, 31 Jan 2024 10:40:29 -0500 Subject: [PATCH 10/11] Revert "Switch `gradient()` to return the target." This reverts commit 42c6f586d75380f04e592016310472c9ae84d78f. Do it for real this time. We aren't using operator overloading at the moment. --- .../ibm/wala/cast/python/ml/test/TestTensorflowModel.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java b/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java index 921ee9004..82cae8433 100644 --- a/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java +++ b/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java @@ -267,11 +267,7 @@ public void testTf2() testTf2("tf2_test_reduce_mean.py", "f", 1, 1, 2); testTf2("tf2_test_reduce_mean.py", "g", 1, 1, 2); testTf2("tf2_test_reduce_mean.py", "h", 1, 1, 2); - testTf2( - "tf2_test_gradient.py", - "f", - 0, - 0); // NOTE: Change to 1 parameter once https://github.com/wala/ML/issues/135 is fixed. + testTf2("tf2_test_gradient.py", "f", 1, 1, 2); testTf2("tf2_test_gradient2.py", "f", 1, 1, 2); testTf2("tf2_test_multiply.py", "f", 1, 1, 2); testTf2("tf2_test_multiply2.py", "f", 1, 1, 2); From ae1bb6637f8582aaaa868de8b6fcc9a9cab408dc Mon Sep 17 00:00:00 2001 From: Raffi Khatchadourian Date: Wed, 31 Jan 2024 10:44:31 -0500 Subject: [PATCH 11/11] Apply spotless. --- .../ibm/wala/cast/python/ml/test/TestTensorflowModel.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java b/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java index 82cae8433..50fab18f9 100644 --- a/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java +++ b/com.ibm.wala.cast.python.ml.test/source/com/ibm/wala/cast/python/ml/test/TestTensorflowModel.java @@ -263,7 +263,11 @@ public void testTf2() testTf2("tf2_test_add5.py", "f", 1, 1, 2); testTf2("tf2_test_add6.py", "f", 1, 1, 2); testTf2("multigpu_training.py", "run_optimization", 2, 4, 2, 3); - testTf2("multigpu_training.py", "average_gradients", 0, 0); // NOTE: Change to 1, 1, 2 once https://github.com/wala/ML/issues/136 is fixed. + testTf2( + "multigpu_training.py", + "average_gradients", + 0, + 0); // NOTE: Change to 1, 1, 2 once https://github.com/wala/ML/issues/136 is fixed. testTf2("tf2_test_reduce_mean.py", "f", 1, 1, 2); testTf2("tf2_test_reduce_mean.py", "g", 1, 1, 2); testTf2("tf2_test_reduce_mean.py", "h", 1, 1, 2);