如何在java中将INDArray转换为Json?

时间:2018-02-16 08:13:45

标签: java multidimensional-array dl4j numpy-ndarray

INDArray image = loader.asMatrix(file);

如何将INDArray转换为Json String,并将Json String转换为INDArray。我在谷歌搜索它没有显示任何记录此结果。

3 个答案:

答案 0 :(得分:2)

摆弄我看到INDArray有一个data()方法(参见INDArray API

这为您提供了DataBuffer,而INDArray image = loader.asMatrix(file); DataBuffer dataBuffer = image.data(); int[] array = dataBuffer.asInt(); // or any type you want 又有将其导出为Java数组的方法(参见DataBuffer API

所以我认为你应该这样做并做:

Gson

现在你有一个Java数组,你可以使用Gson gson = new Gson(); String jsonString = gson.toJson(array); 来创建一个Json字符串

{{1}}

我认为你可以用其他方式做同样的事情(JSON到INDArray) 使用Gson将您的json字符串转换为java数组,然后从中创建一个INDArray。请参阅用户指南Creating NDArrays from Java arrays

答案 1 :(得分:1)

    INDArray matrix=  imageLoader.asMatrix(file);

    System.out.println("INDArray Original: " + matrix);
    DataBuffer buff= matrix.data();
    double[] array= buff.asDouble();

    Gson gson= new Gson();
    String imageStr= gson.toJson(array);
    ArrayList<Double> result= gson.fromJson(imageStr, ArrayList.class);

    double[] r= ArrayUtil.toArrayDouble(result);

    int[] shape = matrix.shape();
    INDArray final_array= Nd4j.create(r, shape, 'c');
    System.out.println("After Java array to INDarray: " + final_array.toString());

将INDArray转换为Gson以及从GSON转换为INDArray的代码的完整版本。

答案 2 :(得分:0)

用于二维数组:

INDArray matrix = YOUR_MATRIX;
double[][] java2dArray = matrix.toDoubleMatrix();


INDArray matrix = ND4j.create(java2dArray);