@Override public void serialize(INDArray indArray, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { String toBase64 = Nd4jBase64.base64String(indArray); jsonGenerator.writeStartObject(); jsonGenerator.writeStringField("array", toBase64); jsonGenerator.writeEndObject(); } }
@Override public void serialize(AtomicBoolean atomicDouble, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { jsonGenerator.writeBoolean(atomicDouble.get()); } }
if (indArray.isView()) indArray = indArray.dup(indArray.ordering()); jsonGenerator.writeStartObject(); DataBuffer view = indArray.data(); jsonGenerator.writeArrayFieldStart("dataBuffer"); for (int i = 0; i < view.length(); i++) { jsonGenerator.writeNumber(view.getDouble(i)); jsonGenerator.writeEndArray(); jsonGenerator.writeArrayFieldStart("shapeField"); for (int i = 0; i < indArray.rank(); i++) { jsonGenerator.writeNumber(indArray.size(i)); jsonGenerator.writeEndArray(); jsonGenerator.writeArrayFieldStart("strideField"); for (int i = 0; i < indArray.rank(); i++) jsonGenerator.writeNumber(indArray.stride(i)); jsonGenerator.writeEndArray(); jsonGenerator.writeNumberField("offsetField", indArray.offset()); jsonGenerator.writeStringField("typeField", indArray instanceof IComplexNDArray ? "complex" : "real"); jsonGenerator.writeNumberField("rankField", indArray.rank()); jsonGenerator.writeNumberField("numElements", view.length()); jsonGenerator.writeStringField("orderingField", String.valueOf(indArray.ordering())); jsonGenerator.writeEndObject();
@Override public void serialize(Object o, JsonGenerator j, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { j.writeStartObject(); j.writeStringField("class", o.getClass().getName()); j.writeObjectField("value", o); j.writeEndObject(); } }
@Override public void serialize(AtomicDouble atomicDouble, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { jsonGenerator.writeNumber(atomicDouble.doubleValue()); } }
@Override public void serialize(INDArray array, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { if (array.isView()) { array = array.dup(); } double[] dArr = array.data().asDouble(); jsonGenerator.writeObject(dArr); } }
private static ObjectMapper initMapperJson() { return initMapper(new JsonFactory()); }
@Override public void serialize(INDArray indArray, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { String toBase64 = Nd4jBase64.base64String(indArray); jsonGenerator.writeStartObject(); jsonGenerator.writeStringField("array", toBase64); jsonGenerator.writeEndObject(); } }
@Override public void serialize(AtomicDouble atomicDouble, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { jsonGenerator.writeNumber(atomicDouble.doubleValue()); } }
@Override public void serialize(AtomicBoolean atomicDouble, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { jsonGenerator.writeBoolean(atomicDouble.get()); } }
@Override public INDArray deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { JsonNode node = jsonParser.getCodec().readTree(jsonParser); if (node == null) return null; int size = node.size(); double[] d = new double[size]; for (int i = 0; i < size; i++) { d[i] = node.get(i).asDouble(); } return Nd4j.create(d); } }
@Override public INDArray deserialize(JsonParser jp, DeserializationContext deserializationContext) throws IOException { JsonNode node = jp.getCodec().readTree(jp); JsonNode arr = node.get("dataBuffer"); int rank = node.get("rankField").asInt(); int numElements = node.get("numElements").asInt(); int offset = node.get("offsetField").asInt(); JsonNode shape = node.get("shapeField"); JsonNode stride = node.get("strideField"); String type = node.get("typeField").asText(); int[] realShape = new int[rank]; int[] realStride = new int[rank]; DataBuffer buff = Nd4j.createBuffer(numElements); for (int i = 0; i < numElements; i++) { buff.put(i, arr.get(i).asDouble()); } String ordering = node.get("orderingField").asText(); for (int i = 0; i < rank; i++) { realShape[i] = shape.get(i).asInt(); realStride[i] = stride.get(i).asInt(); } INDArray ret = type.equals("real") ? Nd4j.create(buff, realShape, realStride, offset, ordering.charAt(0)) : Nd4j.createComplex(buff, realShape, realStride, offset, ordering.charAt(0)); return ret; } }
@Override public INDArray deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { JsonNode node = jsonParser.getCodec().readTree(jsonParser); if (node == null) return null; int size = node.size(); double[] d = new double[size]; for (int i = 0; i < size; i++) { d[i] = node.get(i).asDouble(); } return Nd4j.create(d); } }