@@ -926,7 +926,7 @@ def expanddims_op7(ctx, node, name, args):
926
926
927
927
def stridedslice_op (ctx , node , name , args ):
928
928
# for now we implement common cases. Things like strides!=1 are not mappable to onnx.
929
- not_supported_attr = ["ellipsis_mask" , " new_axis_mask" ]
929
+ not_supported_attr = ["new_axis_mask" ]
930
930
for attr_name in not_supported_attr :
931
931
attr = node .get_attr (attr_name )
932
932
if attr is not None and attr .i != 0 :
@@ -938,6 +938,8 @@ def stridedslice_op(ctx, node, name, args):
938
938
max_size = np .iinfo (begin .dtype ).max
939
939
end_mask = node .get_attr ("end_mask" )
940
940
end_mask = end_mask .i if end_mask is not None else 0
941
+ ellipsis_mask = node .get_attr ("ellipsis_mask" )
942
+ ellipsis_mask = ellipsis_mask .i if ellipsis_mask is not None else 0
941
943
begin_mask = node .get_attr ("begin_mask" )
942
944
begin_mask = begin_mask .i if begin_mask is not None else 0
943
945
shrink_axis_mask = node .get_attr ("shrink_axis_mask" )
@@ -953,6 +955,11 @@ def stridedslice_op(ctx, node, name, args):
953
955
raise ValueError ("StridedSlice: only strides=1 is supported" )
954
956
axes .append (idx )
955
957
958
+ if (ellipsis_mask >> idx ) & 1 :
959
+ new_begin .append (0 )
960
+ new_end .append (max_size )
961
+ continue
962
+
956
963
# an implicit condition is stride == 1 (checked in above)
957
964
if begin_item < 0 and end_item == 0 :
958
965
end_item = max_size
0 commit comments