snuspl / dolphin

14 stars 2 forks source link

Incorrect results of matrix multiplication and matrix concatenation of Nd4j library #142

Closed beomyeol closed 8 years ago

beomyeol commented 8 years ago

We are using 0.0.3.5.5.5 version of ND4J library for matrix operations. However, I found that matrix multiplication results are incorrect when getting one of operands via getRow() method of INDArray. getRow() method is essential for batch processing. In addition, the concatenation operation of matrices produces incorrect results of which shapes are wrong. In model partitioning, the concatenation operation is necessary.

With the latest version 0.4-rc3.5 of ND4J, the above issues seem to be fixed. But, multiplication results are still incorrect, which makes NerualNetworkTest fail. Although we have watched the updates of ND4J library for more than 2 months, the accuracy problem of matrix multiplication has not been fixed yet.

We may use workarounds for these. But it will make our codes complicated. Thus, we should consider the replacement of ND4J library with other stable, reliable, and faster BLAS libraries such as JBLAS and netlib-java.

bgchun commented 8 years ago

+1 on using JBLAS and netlib-java.

On Tue, Nov 3, 2015 at 4:59 PM, Beomyeol Jeon notifications@github.com wrote:

We are using 0.0.3.5.5.5 version of ND4J http://nd4j.org/ library for matrix operations. However, I found that matrix multiplication results are incorrect when getting one of operands via getRow() method of INDArray. getRow() method is essential for batch processing. In addition, the concatenation operation of matrices produces incorrect results of which shapes are wrong. In model partitioning, the concatenation operation is necessary.

With the latest version 0.4-rc3.5 of ND4J, the above issues seem to be fixed. But, multiplication results are still incorrect, which makes NerualNetworkTest fail. Although we have watched the updates of ND4J library for more than 2 months, the accuracy problem of matrix multiplication has not been fixed yet.

We may use workarounds for these. But it will make our codes complicated. Thus, we should consider the replacement of ND4J library with other stable, reliable, and faster BLAS libraries such as JBLAS http://http://jblas.org/ and netlib-java https://github.com/fommil/netlib-java.

— Reply to this email directly or view it on GitHub https://github.com/cmssnu/dolphin/issues/142.

Byung-Gon Chun

dongjoon-hyun commented 8 years ago

@swlsw , any comments?

swlsw commented 8 years ago

We couldn't find any solution for Nd4j problem, so +1 on using JBLAS and netlib-java.

dongjoon-hyun commented 8 years ago

Very good!