2017-11-25 34 views
2

精度を損なうことなくdoubleをNd4j.INDArrayに変換できません。INDArrayのJava doubleが精度を失う

double[] weight = new double[]{-0.13404223866376802,-0.11294084872465669,0.11232944517596409,-0.01687720880184701,0.13288394029423414,-0.06916641552096867,0.1518882606786481}; 
INDArray array = Nd4j.create(weight, new int[]{1, 7}); 
System.out.println(array); 

出力は

[-0.13, -0.11, 0.11, -0.02, 0.13, -0.07, 0.15] 

所望の出力は、完全な精度で変換する方法

[-0.13404223866376802,-0.11294084872465669,0.11232944517596409,-0.01687720880184701,0.13288394029423414,-0.06916641552096867,0.1518882606786481] 

すべきですか?ですか

+0

@LeoAsoが言っていることの背後にある点は、INDArrayが実際にデータを切り捨てるのではなく、ダブル全体に格納して操作することです。これはtoString()メソッドの機能です。彼の答えは、あなたが望む精度でINDArrayをフォーマットすることができます。 – andrewm921

答えて

1

あなたが好きな精度で使用

int precision = 7; 
String printed = new NDArrayStrings(precision).format(this); 
System.out.println(printed); 

NDArrayStringsorg.nd4j.linalg.stringパッケージに含まれています。

関連する問題