【问题标题】:How to convert INDArray to Json in java?如何在java中将INDArray转换为Json?
【发布时间】:2018-02-16 08:13:45
【问题描述】:
INDArray image = loader.asMatrix(file);

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

【问题讨论】:

  • 我假设一个 INDArray 是一个矩阵,你里面有什么类型的数据?你能举个例子吗。您还可以将其转换为 Java 2D 数组吗?

标签: java multidimensional-array dl4j numpy-ndarray


【解决方案1】:

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

这为您提供了一个DataBuffer,而该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 String

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

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

【讨论】:

    【解决方案2】:
        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 的完整代码版本。

    【讨论】:

    • 很高兴我的回答有帮助:)
    【解决方案3】:

    对于二维数组:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-02
      • 2014-07-07
      • 2012-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多