Skip to content

Commit 89a8676

Browse files
authored
Implement isposinf function in keras.ops (#21582)
* Add isposinf for keras.ops * Update openvino numpy for isposinf * Correct code by gemini assist
1 parent 27504e6 commit 89a8676

File tree

12 files changed

+92
-1
lines changed

12 files changed

+92
-1
lines changed

keras/api/_tf_keras/keras/ops/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@
204204
from keras.src.ops.numpy import isinf as isinf
205205
from keras.src.ops.numpy import isnan as isnan
206206
from keras.src.ops.numpy import isneginf as isneginf
207+
from keras.src.ops.numpy import isposinf as isposinf
207208
from keras.src.ops.numpy import kaiser as kaiser
208209
from keras.src.ops.numpy import left_shift as left_shift
209210
from keras.src.ops.numpy import less as less

keras/api/_tf_keras/keras/ops/numpy/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@
9292
from keras.src.ops.numpy import isinf as isinf
9393
from keras.src.ops.numpy import isnan as isnan
9494
from keras.src.ops.numpy import isneginf as isneginf
95+
from keras.src.ops.numpy import isposinf as isposinf
9596
from keras.src.ops.numpy import kaiser as kaiser
9697
from keras.src.ops.numpy import left_shift as left_shift
9798
from keras.src.ops.numpy import less as less

keras/api/ops/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@
204204
from keras.src.ops.numpy import isinf as isinf
205205
from keras.src.ops.numpy import isnan as isnan
206206
from keras.src.ops.numpy import isneginf as isneginf
207+
from keras.src.ops.numpy import isposinf as isposinf
207208
from keras.src.ops.numpy import kaiser as kaiser
208209
from keras.src.ops.numpy import left_shift as left_shift
209210
from keras.src.ops.numpy import less as less

keras/api/ops/numpy/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@
9292
from keras.src.ops.numpy import isinf as isinf
9393
from keras.src.ops.numpy import isnan as isnan
9494
from keras.src.ops.numpy import isneginf as isneginf
95+
from keras.src.ops.numpy import isposinf as isposinf
9596
from keras.src.ops.numpy import kaiser as kaiser
9697
from keras.src.ops.numpy import left_shift as left_shift
9798
from keras.src.ops.numpy import less as less

keras/src/backend/jax/numpy.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -792,6 +792,11 @@ def isneginf(x):
792792
return jnp.isneginf(x)
793793

794794

795+
def isposinf(x):
796+
x = convert_to_tensor(x)
797+
return jnp.isposinf(x)
798+
799+
795800
def less(x1, x2):
796801
x1 = convert_to_tensor(x1)
797802
x2 = convert_to_tensor(x2)

keras/src/backend/numpy/numpy.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -701,6 +701,11 @@ def isneginf(x):
701701
return np.isneginf(x)
702702

703703

704+
def isposinf(x):
705+
x = convert_to_tensor(x)
706+
return np.isposinf(x)
707+
708+
704709
def less(x1, x2):
705710
return np.less(x1, x2)
706711

keras/src/backend/openvino/excluded_concrete_tests.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ NumpyDtypeTest::test_isin
3535
NumpyDtypeTest::test_isinf
3636
NumpyDtypeTest::test_isnan
3737
NumpyDtypeTest::test_isneginf
38+
NumpyDtypeTest::test_isposinf
3839
NumpyDtypeTest::test_linspace
3940
NumpyDtypeTest::test_logaddexp
4041
NumpyDtypeTest::test_logspace
@@ -94,6 +95,7 @@ NumpyOneInputOpsCorrectnessTest::test_imag
9495
NumpyOneInputOpsCorrectnessTest::test_isfinite
9596
NumpyOneInputOpsCorrectnessTest::test_isinf
9697
NumpyOneInputOpsCorrectnessTest::test_isneginf
98+
NumpyOneInputOpsCorrectnessTest::test_isposinf
9799
NumpyOneInputOpsCorrectnessTest::test_logaddexp
98100
NumpyOneInputOpsCorrectnessTest::test_max
99101
NumpyOneInputOpsCorrectnessTest::test_mean
@@ -155,10 +157,12 @@ NumpyOneInputOpsDynamicShapeTest::test_corrcoef
155157
NumpyOneInputOpsDynamicShapeTest::test_hamming
156158
NumpyOneInputOpsDynamicShapeTest::test_hanning
157159
NumpyOneInputOpsDynamicShapeTest::test_isneginf
160+
NumpyOneInputOpsDynamicShapeTest::test_isposinf
158161
NumpyOneInputOpsDynamicShapeTest::test_kaiser
159162
NumpyOneInputOpsStaticShapeTest::test_angle
160163
NumpyOneInputOpsStaticShapeTest::test_cbrt
161164
NumpyOneInputOpsStaticShapeTest::test_isneginf
165+
NumpyOneInputOpsStaticShapeTest::test_isposinf
162166
NumpyTwoInputOpsDynamicShapeTest::test_heaviside
163167
NumpyTwoInputOpsDynamicShapeTest::test_isin
164168
NumpyTwoInputOpsStaticShapeTest::test_heaviside

keras/src/backend/openvino/numpy.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -964,6 +964,12 @@ def isneginf(x):
964964
)
965965

966966

967+
def isposinf(x):
968+
raise NotImplementedError(
969+
"`isposinf` is not supported with openvino backend"
970+
)
971+
972+
967973
def less(x1, x2):
968974
element_type = None
969975
if isinstance(x1, OpenVINOKerasTensor):

keras/src/backend/tensorflow/numpy.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1640,10 +1640,18 @@ def isneginf(x):
16401640
x = convert_to_tensor(x)
16411641
dtype_as_dtype = tf.as_dtype(x.dtype)
16421642
if dtype_as_dtype.is_integer or not dtype_as_dtype.is_numeric:
1643-
return tf.zeros(x.shape, tf.bool)
1643+
return tf.zeros_like(x, dtype=tf.bool)
16441644
return tf.math.equal(x, -tf.constant(float("inf"), dtype=x.dtype))
16451645

16461646

1647+
def isposinf(x):
1648+
x = convert_to_tensor(x)
1649+
dtype_as_dtype = tf.as_dtype(x.dtype)
1650+
if dtype_as_dtype.is_integer or not dtype_as_dtype.is_numeric:
1651+
return tf.zeros_like(x, dtype=tf.bool)
1652+
return tf.math.equal(x, tf.constant(float("inf"), dtype=x.dtype))
1653+
1654+
16471655
def less(x1, x2):
16481656
x1 = convert_to_tensor(x1)
16491657
x2 = convert_to_tensor(x2)

keras/src/backend/torch/numpy.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -918,6 +918,11 @@ def isneginf(x):
918918
return torch.isneginf(x)
919919

920920

921+
def isposinf(x):
922+
x = convert_to_tensor(x)
923+
return torch.isposinf(x)
924+
925+
921926
def less(x1, x2):
922927
x1, x2 = convert_to_tensor(x1), convert_to_tensor(x2)
923928
return torch.less(x1, x2)

0 commit comments

Comments
 (0)