1
INDArray image = loader.asMatrix(file);

如何将 INDArray 转换为 Json String 以及从 Json String 转换为 INDArray。我在谷歌搜索它没有显示任何记录这个的结果。

4

3 回答 3

3

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

这为您提供了一个DataBuffer其反过来具有将其导出为 Java 数组的方法(请参阅DataBuffer API

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

INDArray image = loader.asMatrix(file);
DataBuffer dataBuffer = image.data();
int[] array = dataBuffer.asInt(); // or any type you want

现在你有了一个 Java 数组,你可以用它Gson来制作一个 Json 字符串

Gson gson = new Gson();
String jsonString = gson.toJson(array);

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

于 2018-02-16T10:01:40.363 回答
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 的完整代码版本。

于 2018-02-17T04:31:23.050 回答
0

对于二维数组:

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


INDArray matrix = ND4j.create(java2dArray);
于 2019-11-27T06:47:12.940 回答