@Override public AtomicDouble deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { JsonNode node = jsonParser.getCodec().readTree(jsonParser); double value = node.asDouble(); return new AtomicDouble(value); } }
@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 AtomicDouble deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { JsonNode node = jsonParser.getCodec().readTree(jsonParser); double value = node.asDouble(); return new AtomicDouble(value); } }
return new BetaDistribution(node.get("alpha").asDouble(), node.get("beta").asDouble()); case "CauchyDistribution": return new CauchyDistribution(node.get("median").asDouble(), node.get("scale").asDouble()); case "ChiSquaredDistribution": return new ChiSquaredDistribution(node.get("dof").asDouble()); case "ExponentialDistribution": return new ExponentialDistribution(node.get("mean").asDouble()); case "FDistribution": return new FDistribution(node.get("numeratorDof").asDouble(), node.get("denominatorDof").asDouble()); case "GammaDistribution": return new GammaDistribution(node.get("shape").asDouble(), node.get("scale").asDouble()); case "LevyDistribution": return new LevyDistribution(node.get("mu").asDouble(), node.get("c").asDouble()); case "LogNormalDistribution": return new LogNormalDistribution(node.get("scale").asDouble(), node.get("shape").asDouble()); case "NormalDistribution": return new NormalDistribution(node.get("mean").asDouble(), node.get("stdev").asDouble()); case "ParetoDistribution": return new ParetoDistribution(node.get("scale").asDouble(), node.get("shape").asDouble()); case "TDistribution": return new TDistribution(node.get("dof").asDouble()); case "TriangularDistribution": return new TriangularDistribution(node.get("a").asDouble(), node.get("b").asDouble(), node.get("c").asDouble()); case "UniformRealDistribution": return new UniformRealDistribution(node.get("lower").asDouble(), node.get("upper").asDouble()); case "WeibullDistribution": return new WeibullDistribution(node.get("alpha").asDouble(), node.get("beta").asDouble()); default:
return new BetaDistribution(node.get("alpha").asDouble(), node.get("beta").asDouble()); case "CauchyDistribution": return new CauchyDistribution(node.get("median").asDouble(), node.get("scale").asDouble()); case "ChiSquaredDistribution": return new ChiSquaredDistribution(node.get("dof").asDouble()); case "ExponentialDistribution": return new ExponentialDistribution(node.get("mean").asDouble()); case "FDistribution": return new FDistribution(node.get("numeratorDof").asDouble(), node.get("denominatorDof").asDouble()); case "GammaDistribution": return new GammaDistribution(node.get("shape").asDouble(), node.get("scale").asDouble()); case "LevyDistribution": return new LevyDistribution(node.get("mu").asDouble(), node.get("c").asDouble()); case "LogNormalDistribution": return new LogNormalDistribution(node.get("scale").asDouble(), node.get("shape").asDouble()); case "NormalDistribution": return new NormalDistribution(node.get("mean").asDouble(), node.get("stdev").asDouble()); case "ParetoDistribution": return new ParetoDistribution(node.get("scale").asDouble(), node.get("shape").asDouble()); case "TDistribution": return new TDistribution(node.get("dof").asDouble()); case "TriangularDistribution": return new TriangularDistribution(node.get("a").asDouble(), node.get("b").asDouble(), node.get("c").asDouble()); case "UniformRealDistribution": return new UniformRealDistribution(node.get("lower").asDouble(), node.get("upper").asDouble()); case "WeibullDistribution": return new WeibullDistribution(node.get("alpha").asDouble(), node.get("beta").asDouble()); case "LogUniformDistribution":
@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 IntegerDistribution deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { JsonNode node = p.getCodec().readTree(p); String simpleName = node.get("distribution").asText(); switch (simpleName) { case "BinomialDistribution": return new BinomialDistribution(node.get("trials").asInt(), node.get("p").asDouble()); case "GeometricDistribution": return new GeometricDistribution(node.get("p").asDouble()); case "HypergeometricDistribution": return new HypergeometricDistribution(node.get("populationSize").asInt(), node.get("numberOfSuccesses").asInt(), node.get("sampleSize").asInt()); case "PascalDistribution": return new PascalDistribution(node.get("r").asInt(), node.get("p").asDouble()); case "PoissonDistribution": return new PoissonDistribution(node.get("p").asDouble()); case "UniformIntegerDistribution": return new UniformIntegerDistribution(node.get("lower").asInt(), node.get("upper").asInt()); case "ZipfDistribution": return new ZipfDistribution(node.get("numElements").asInt(), node.get("exponent").asDouble()); default: throw new RuntimeException("Unknown or not supported distribution: " + simpleName); } } }
@Override public IntegerDistribution deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { JsonNode node = p.getCodec().readTree(p); String simpleName = node.get("distribution").asText(); switch (simpleName) { case "BinomialDistribution": return new BinomialDistribution(node.get("trials").asInt(), node.get("p").asDouble()); case "GeometricDistribution": return new GeometricDistribution(node.get("p").asDouble()); case "HypergeometricDistribution": return new HypergeometricDistribution(node.get("populationSize").asInt(), node.get("numberOfSuccesses").asInt(), node.get("sampleSize").asInt()); case "PascalDistribution": return new PascalDistribution(node.get("r").asInt(), node.get("p").asDouble()); case "PoissonDistribution": return new PoissonDistribution(node.get("p").asDouble()); case "UniformIntegerDistribution": return new UniformIntegerDistribution(node.get("lower").asInt(), node.get("upper").asInt()); case "ZipfDistribution": return new ZipfDistribution(node.get("numElements").asInt(), node.get("exponent").asDouble()); default: throw new RuntimeException("Unknown or not supported distribution: " + simpleName); } } }
+ " is missing 'mean' or 'std' field", jp.getCurrentLocation()); double m = n.get("mean").asDouble(); double s = n.get("std").asDouble(); return new NormalDistribution(m, s); } else if (node.has("gaussian")) { + " is missing 'mean' or 'std' field", jp.getCurrentLocation()); double m = n.get("mean").asDouble(); double s = n.get("std").asDouble(); return new GaussianDistribution(m, s); + " is missing 'lower' or 'upper' field", jp.getCurrentLocation()); double l = n.get("lower").asDouble(); double u = n.get("upper").asDouble(); return new UniformDistribution(l, u); } else if (node.has("binomial")) { double p = n.get("probabilityOfSuccess").asDouble(); return new BinomialDistribution(num, p); } else {
@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; } }