heliqi opened a new issue #5172: [FRONTEND] tensorflow  _stridedSlice function 
error
URL: https://github.com/apache/incubator-tvm/issues/5172
 
 
   I find a some problems about the _stridedSlice  from 
relay/frontend/tensorflow.py:
   1. when begin < 0  and shrink_axis_mask > 0 ,end error. example:
   begin = [-1] end= [0] shrink_axis_mask = 1  data_shape = (4,)
   after _transformask,get result: begin = [3] end = [0]. The correct answer 
would be 'begin = [3], end = [4]'
   ```
   def _stridedSlice():
       def _impl(inputs, attr, params, mod):
           xxxx
           def _transform_mask(stride_dim, ellipsis_mask):
               xxxx
                       if mask & shrink_axis_mask:
                           #Tensorflow make axis with shrink_axis_mask as 
dimension 1
                           m_begin[final_index] = data_shape[final_index] + 
begin[index] \
                                                    if begin[index] < 0 else 
begin[index]
                           #error
                           m_end[final_index] = begin[index] + 1     =>     
m_begin[final_index] + 1
                           m_stride[final_index] = 1
                           fshape_indices.append(-2)
                       else:
                           fshape_indices.append(final_index)
   ```
   2. 
   ```
           if not final_output:
               for i_shape in final_output:
                   if i_shape == 0:
                       return _op.squeeze(out)
               if not shrink_axis_mask:
                   ret = out
               else:
                   final_shape = []
                   for dim in out_shape:
                       if dim != 1:
                           final_shape.append(dim)
                   if len(final_shape) == 0:
                       ret = _op.squeeze(out)
                   else:
                       # We need reshape to handle dynamic shape.
                       ret = _op.reshape(out, newshape=tuple(final_shape))
           else:
               #if 0 in  final_output([0],[15,0],etc), should be retrun empty 
or _op.squeeze(out)
               ret = _op.reshape(out, newshape=tuple(final_output))
   ```
   or  change judge CHECK_LT to CHECK_LE  on  
src/relay/op/tensor/transform.cc:StridedSliceRel and allow begin_i == end_i .

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to