2017-11-25 10 views
2

정밀도를 잃지 않고 Nd4j.INDArray로 double을 변환 할 수 없습니다.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가 실제로 데이터를 자르지 않는다는 것입니다. INDArray는 데이터를 자르지 않습니다. 즉, 전체 Double에 저장하고 작동합니다. 그것은 toString() 메소드가하는 일입니다. 그의 대답을 통해 원하는 정밀도로 INDArray를 포맷 할 수 있습니다. – andrewm921

답변

1

당신이 원하는 정밀도를 사용

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

. NDArrayStringsorg.nd4j.linalg.string 패키지에 있습니다.