1717import unittest
1818import paddle
1919from paddle .fluid .framework import default_main_program , Program , convert_np_dtype_to_dtype_ , in_dygraph_mode
20+ import paddle
2021import paddle .fluid as fluid
2122import paddle .fluid .layers as layers
2223import paddle .fluid .core as core
@@ -218,6 +219,26 @@ def _test_slice_index_list(self, place):
218219 self .assertTrue ((result [2 ] == expected [2 ]).all ())
219220 self .assertTrue ((result [3 ] == expected [3 ]).all ())
220221
222+ def _test_slice_index_ellipsis (self , place ):
223+ data = np .random .rand (2 , 3 , 4 ).astype ("float32" )
224+ prog = paddle .static .Program ()
225+ with paddle .static .program_guard (prog ):
226+ x = paddle .assign (data )
227+ out1 = x [0 :, ..., 1 :]
228+ out2 = x [0 :, ...]
229+ out3 = x [..., 1 :]
230+ out4 = x [...]
231+
232+ exe = paddle .static .Executor (place )
233+ result = exe .run (prog , fetch_list = [out1 , out2 , out3 , out4 ])
234+
235+ expected = [data [0 :, ..., 1 :], data [0 :, ...], data [..., 1 :], data [...]]
236+
237+ self .assertTrue ((result [0 ] == expected [0 ]).all ())
238+ self .assertTrue ((result [1 ] == expected [1 ]).all ())
239+ self .assertTrue ((result [2 ] == expected [2 ]).all ())
240+ self .assertTrue ((result [3 ] == expected [3 ]).all ())
241+
221242 with self .assertRaises (IndexError ):
222243 res = x [[1 , 0 ], [0 , 0 ]]
223244
@@ -233,6 +254,7 @@ def test_slice(self):
233254 self ._test_slice (place )
234255 self ._test_slice_index_tensor (place )
235256 self ._test_slice_index_list (place )
257+ self ._test_slice_index_ellipsis (place )
236258
237259 def _tostring (self ):
238260 b = default_main_program ().current_block ()
0 commit comments