You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@mxnet.apache.org by "Zach Boldyga (JIRA)" <ji...@apache.org> on 2019/03/10 19:58:00 UTC

[jira] [Updated] (MXNET-1350) Cholesky factorization: matrix inversion, determinant, logdeterminant

     [ https://issues.apache.org/jira/browse/MXNET-1350?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Zach Boldyga updated MXNET-1350:
--------------------------------
    Description: 
MXNet already includes a routine for Cholesky factorization, and allows for matrix inversion using this factorization.

The determinant and log determinant are straightforward to calculate using the Cholesky factorization, but MXNet does not provide a way to compute the determinant or log determinant. 

This issue was reported and upvoted by the community: [https://github.com/apache/incubator-mxnet/issues/14360] . A reference was made to Torch, which includes routines for the inverse, determinant, and log determinant.

I'd like to implement the following changes:
 # Provide a single, clear API endpoint for calculating matrix inversion. e.g. mxnet.ndarray.linalg.inverse. This can be in addition to the existing endpoints, which may still be useful to some users. It will be simple to implement; a merger of the two existing ops (potrf, potri - used to calculate the Cholesky factorization and then calculate the inversion using that factorization). But currently it's confusing for users to discover that MXNet actually supports matrix inversion, and it's a two step process.
 # Add an API endpoint for calculating the matrix determinant. e.g. mxnet.ndarray.linalg.det. This would run Cholesky factorization internally, then use the resultant triangular matrix to simplify the determinant calculation.
 # Add an API endpoint for calculating the log determinant of the input matrix. e.g. mxnet.ndarray.linalg.logdet. Similar to #2, but it may be as simple as combining cholesky factorization and sumlogdiag internally. 

Overall, this is just piecing together of other existing linear algebra operations and clarifying the documentation so that users can access these operations without having to have a deeper understanding of linear algebra.

I can open a PR as soon as someone reviews this, just let me know if a different approach is preferred or if there are any specifics I should be careful about in regards to implementation. Thanks!

  was:
MXNet already includes a routine for Cholesky factorization, and allows for matrix inversion using this factorization.

The determinant and log determinant are straightforward to calculate using the Cholesky factorization, but MXNet does not provide a way to compute the determinant or log determinant. 

This issue was reported and upvoted by the community: [https://github.com/apache/incubator-mxnet/issues/14360] . A reference was made to Torch, which includes routines for the inverse, determinant, and log determinant.

I'd like to implement the following changes:
 # Provide a single, clear API endpoint for calculating matrix inversion. e.g. mxnet.ndarray.linalg.inverse. This can be in addition to the existing endpoints, which may still be useful to some users. It will be simple to implement; a merger of the two existing ops. But currently it's confusing for users to discover that MXNet actually supports matrix inversion, and it's a two step process.
 # Add an API endpoint for calculating the matrix determinant. e.g. mxnet.ndarray.linalg.det. This would run Cholesky factorization internally, then use the resultant triangular matrix to simplify the determinant calculation.
 # Add an API endpoint for calculating the log determinant of the input matrix. e.g. mxnet.ndarray.linalg.logdet. Similar to #2, but it may be as simple as combining cholesky factorization and sumlogdiag internally. 

Overall, this is just piecing together of other existing linear algebra operations and clarifying the documentation so that users can access these operations without having to have a deeper understanding of linear algebra.

I can open a PR as soon as someone reviews this, just let me know if a different approach is preferred or if there are any specifics I should be careful about in regards to implementation. Thanks!


> Cholesky factorization: matrix inversion, determinant, logdeterminant
> ---------------------------------------------------------------------
>
>                 Key: MXNET-1350
>                 URL: https://issues.apache.org/jira/browse/MXNET-1350
>             Project: Apache MXNet
>          Issue Type: New Feature
>          Components: Apache MXNet Backend
>            Reporter: Zach Boldyga
>            Priority: Minor
>
> MXNet already includes a routine for Cholesky factorization, and allows for matrix inversion using this factorization.
> The determinant and log determinant are straightforward to calculate using the Cholesky factorization, but MXNet does not provide a way to compute the determinant or log determinant. 
> This issue was reported and upvoted by the community: [https://github.com/apache/incubator-mxnet/issues/14360] . A reference was made to Torch, which includes routines for the inverse, determinant, and log determinant.
> I'd like to implement the following changes:
>  # Provide a single, clear API endpoint for calculating matrix inversion. e.g. mxnet.ndarray.linalg.inverse. This can be in addition to the existing endpoints, which may still be useful to some users. It will be simple to implement; a merger of the two existing ops (potrf, potri - used to calculate the Cholesky factorization and then calculate the inversion using that factorization). But currently it's confusing for users to discover that MXNet actually supports matrix inversion, and it's a two step process.
>  # Add an API endpoint for calculating the matrix determinant. e.g. mxnet.ndarray.linalg.det. This would run Cholesky factorization internally, then use the resultant triangular matrix to simplify the determinant calculation.
>  # Add an API endpoint for calculating the log determinant of the input matrix. e.g. mxnet.ndarray.linalg.logdet. Similar to #2, but it may be as simple as combining cholesky factorization and sumlogdiag internally. 
> Overall, this is just piecing together of other existing linear algebra operations and clarifying the documentation so that users can access these operations without having to have a deeper understanding of linear algebra.
> I can open a PR as soon as someone reviews this, just let me know if a different approach is preferred or if there are any specifics I should be careful about in regards to implementation. Thanks!



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@mxnet.apache.org
For additional commands, e-mail: issues-help@mxnet.apache.org