Skip to content

Commit dfaca0e

Browse files
authored
Implementation np.moveaxis function (#21269)
* Implementation np.moveaxis function in path: keras\src\backend\openvino\numpy.py * fix format errors * fix Suggested changes in moveaxis method
1 parent 3000d81 commit dfaca0e

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

keras/src/backend/openvino/excluded_concrete_tests.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ NumpyDtypeTest::test_mean
3838
NumpyDtypeTest::test_median
3939
NumpyDtypeTest::test_meshgrid
4040
NumpyDtypeTest::test_minimum_python_types
41-
NumpyDtypeTest::test_moveaxis
4241
NumpyDtypeTest::test_multiply
4342
NumpyDtypeTest::test_outer_
4443
NumpyDtypeTest::test_power
@@ -96,7 +95,6 @@ NumpyOneInputOpsCorrectnessTest::test_max
9695
NumpyOneInputOpsCorrectnessTest::test_mean
9796
NumpyOneInputOpsCorrectnessTest::test_median
9897
NumpyOneInputOpsCorrectnessTest::test_meshgrid
99-
NumpyOneInputOpsCorrectnessTest::test_moveaxis
10098
NumpyOneInputOpsCorrectnessTest::test_pad_float16_constant_2
10199
NumpyOneInputOpsCorrectnessTest::test_pad_float32_constant_2
102100
NumpyOneInputOpsCorrectnessTest::test_pad_float64_constant_2

keras/src/backend/openvino/numpy.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1109,9 +1109,23 @@ def mod(x1, x2):
11091109

11101110

11111111
def moveaxis(x, source, destination):
1112-
raise NotImplementedError(
1113-
"`moveaxis` is not supported with openvino backend"
1114-
)
1112+
x = get_ov_output(x)
1113+
if isinstance(source, int):
1114+
source = [source]
1115+
if isinstance(destination, int):
1116+
destination = [destination]
1117+
1118+
ndim = x.get_partial_shape().rank.get_length()
1119+
source = [axis if axis >= 0 else axis + ndim for axis in source]
1120+
destination = [axis if axis >= 0 else axis + ndim for axis in destination]
1121+
1122+
axes = list(range(ndim))
1123+
for src, dst in zip(source, destination):
1124+
axes.remove(src)
1125+
axes.insert(dst, src)
1126+
1127+
axes_const = ov_opset.constant(axes, Type.i32).output(0)
1128+
return OpenVINOKerasTensor(ov_opset.transpose(x, axes_const).output(0))
11151129

11161130

11171131
def nan_to_num(x, nan=0.0, posinf=None, neginf=None):

0 commit comments

Comments
 (0)