You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mxnet.apache.org by GitBox <gi...@apache.org> on 2018/08/24 08:13:39 UTC

[GitHub] jasonyu1996 opened a new issue #12327: [Feature Request] support of diag for N-d arrays

jasonyu1996 opened a new issue #12327: [Feature Request] support of diag for N-d arrays
URL: https://github.com/apache/incubator-mxnet/issues/12327
 
 
   Hi! 
   
   I just found that the `diag` operator does not support N-d arrays where `N > 2`. According to my own experience, it could be made more useful if the `N > 2` cases are properly designed. For example, I find it troublesome to take the diagonals of several matrices of the same shape at the same time. I know this task could be accomplished with a combination of `arange`, `tile` and `pick`, but it would be very complicated, confusing and error-prone. To support this, the behaviour when `N > 2` could be designed as taking the diagonal of the last two axes, i.e., when fed with an array of shape `[d1, d2, d3, ..., dn-2, dn-1, dn]`, where the diagonal of `[dn-1, dn]` is of length `k`, `diag` would return an array of shape `[d1, d2, d3, ..., dn-2, k]`. Of course, this could be designed to be more flexible (allowing specifying the axes to reduce, for example).
   
   PyTorch provides a `diag` operator that behaves in the same way. Tensorflow actually splits it into two operators, `diag` and `diag_part`, the former of which constructs diagonal matrices and the latter takes diagonals from matrices. They are designed to support `N > 2` but not in a way I find useful or flexible.
   
   On the MXNet forum: https://discuss.mxnet.io/t/diag-for-n-d-arrays/1707

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


With regards,
Apache Git Services