Java Code Examples for org.nd4j.linalg.dataset.api.preprocessor.DataNormalization#transform()
The following examples show how to use
org.nd4j.linalg.dataset.api.preprocessor.DataNormalization#transform() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: IrisFileDataSource.java From FederatedAndroidTrainer with MIT License | 7 votes |
private void createDataSource() throws IOException, InterruptedException { //First: get the dataset using the record reader. CSVRecordReader handles loading/parsing int numLinesToSkip = 0; String delimiter = ","; RecordReader recordReader = new CSVRecordReader(numLinesToSkip, delimiter); recordReader.initialize(new InputStreamInputSplit(dataFile)); //Second: the RecordReaderDataSetIterator handles conversion to DataSet objects, ready for use in neural network int labelIndex = 4; //5 values in each row of the iris.txt CSV: 4 input features followed by an integer label (class) index. Labels are the 5th value (index 4) in each row int numClasses = 3; //3 classes (types of iris flowers) in the iris data set. Classes have integer values 0, 1 or 2 DataSetIterator iterator = new RecordReaderDataSetIterator(recordReader, batchSize, labelIndex, numClasses); DataSet allData = iterator.next(); allData.shuffle(); SplitTestAndTrain testAndTrain = allData.splitTestAndTrain(0.80); //Use 80% of data for training trainingData = testAndTrain.getTrain(); testData = testAndTrain.getTest(); //We need to normalize our data. We'll use NormalizeStandardize (which gives us mean 0, unit variance): DataNormalization normalizer = new NormalizerStandardize(); normalizer.fit(trainingData); //Collect the statistics (mean/stdev) from the training data. This does not modify the input data normalizer.transform(trainingData); //Apply normalization to the training data normalizer.transform(testData); //Apply normalization to the test data. This is using statistics calculated from the *training* set }
Example 2
Source File: DiabetesFileDataSource.java From FederatedAndroidTrainer with MIT License | 6 votes |
private void createDataSource() throws IOException, InterruptedException { //First: get the dataset using the record reader. CSVRecordReader handles loading/parsing int numLinesToSkip = 0; String delimiter = ","; RecordReader recordReader = new CSVRecordReader(numLinesToSkip, delimiter); recordReader.initialize(new InputStreamInputSplit(dataFile)); //Second: the RecordReaderDataSetIterator handles conversion to DataSet objects, ready for use in neural network int labelIndex = 11; DataSetIterator iterator = new RecordReaderDataSetIterator(recordReader, batchSize, labelIndex, labelIndex, true); DataSet allData = iterator.next(); SplitTestAndTrain testAndTrain = allData.splitTestAndTrain(0.80); //Use 80% of data for training trainingData = testAndTrain.getTrain(); testData = testAndTrain.getTest(); //We need to normalize our data. We'll use NormalizeStandardize (which gives us mean 0, unit variance): DataNormalization normalizer = new NormalizerStandardize(); normalizer.fit(trainingData); //Collect the statistics (mean/stdev) from the training data. This does not modify the input data normalizer.transform(trainingData); //Apply normalization to the training data normalizer.transform(testData); //Apply normalization to the test data. This is using statistics calculated from the *training* set }
Example 3
Source File: TestImageNet.java From deeplearning4j with Apache License 2.0 | 6 votes |
@Test public void testImageNetLabels() throws IOException { // set up model ZooModel model = VGG19.builder().numClasses(0).build(); //num labels doesn't matter since we're getting pretrained imagenet ComputationGraph initializedModel = (ComputationGraph) model.initPretrained(); // set up input and feedforward NativeImageLoader loader = new NativeImageLoader(224, 224, 3); ClassLoader classloader = Thread.currentThread().getContextClassLoader(); INDArray image = loader.asMatrix(classloader.getResourceAsStream("deeplearning4j-zoo/goldenretriever.jpg")); DataNormalization scaler = new VGG16ImagePreProcessor(); scaler.transform(image); INDArray[] output = initializedModel.output(false, image); // check output labels of result String decodedLabels = new ImageNetLabels().decodePredictions(output[0]); log.info(decodedLabels); assertTrue(decodedLabels.contains("golden_retriever")); // clean up for current model Nd4j.getWorkspaceManager().destroyAllWorkspacesForCurrentThread(); System.gc(); }
Example 4
Source File: NormalizerMinMaxScalerTest.java From deeplearning4j with Apache License 2.0 | 6 votes |
@Test public void testGivenMaxMinConstant() { double tolerancePerc = 1; // 1% of correct value int nSamples = 500; int nFeatures = 3; INDArray featureSet = Nd4j.rand(nSamples, nFeatures).mul(0.1).add(10); INDArray labelSet = Nd4j.zeros(nSamples, 1); DataSet sampleDataSet = new DataSet(featureSet, labelSet); double givenMin = -1000; double givenMax = 1000; DataNormalization myNormalizer = new NormalizerMinMaxScaler(givenMin, givenMax); DataSet transformed = sampleDataSet.copy(); myNormalizer.fit(sampleDataSet); myNormalizer.transform(transformed); //feature set is basically all 10s -> should transform to the min INDArray expected = Nd4j.ones(nSamples, nFeatures).mul(givenMin); INDArray delta = Transforms.abs(transformed.getFeatures().sub(expected)).div(expected); double maxdeltaPerc = delta.max(0, 1).mul(100).getDouble(0); assertTrue(maxdeltaPerc < tolerancePerc); }
Example 5
Source File: ModelUtils.java From gluon-samples with BSD 3-Clause "New" or "Revised" License | 6 votes |
public void trainModel(MultiLayerNetwork model, boolean invertColors, InputStream customImage, int customLabel) throws Exception { List<INDArray> extraFeatures = new LinkedList<>(); List<Integer> extraLabels = new LinkedList<>(); final INDArray[] customData = {null, null}; if (customImage != null) { NativeImageLoader loader = new NativeImageLoader(width, height, channels); DataNormalization scaler = invertColors ? new ImagePreProcessingScaler(1, 0) : new ImagePreProcessingScaler(0, 1); customData[0] = loader.asMatrix(customImage); scaler.transform(customData[0]); customData[1] = Nd4j.create(1, 10); customData[1].putScalar(customLabel, 1.0); extraFeatures.add(customData[0]); extraLabels.add(customLabel); } trainModel(model, extraFeatures, extraLabels); }
Example 6
Source File: NormalizerMinMaxScalerTest.java From nd4j with Apache License 2.0 | 6 votes |
@Test public void testGivenMaxMinConstant() { double tolerancePerc = 1; // 1% of correct value int nSamples = 500; int nFeatures = 3; INDArray featureSet = Nd4j.rand(nSamples, nFeatures).mul(0.1).add(10); INDArray labelSet = Nd4j.zeros(nSamples, 1); DataSet sampleDataSet = new DataSet(featureSet, labelSet); double givenMin = -1000; double givenMax = 1000; DataNormalization myNormalizer = new NormalizerMinMaxScaler(givenMin, givenMax); DataSet transformed = sampleDataSet.copy(); myNormalizer.fit(sampleDataSet); myNormalizer.transform(transformed); //feature set is basically all 10s -> should transform to the min INDArray expected = Nd4j.ones(nSamples, nFeatures).mul(givenMin); INDArray delta = Transforms.abs(transformed.getFeatures().sub(expected)).div(expected); double maxdeltaPerc = delta.max(0, 1).mul(100).getDouble(0, 0); assertTrue(maxdeltaPerc < tolerancePerc); }
Example 7
Source File: NormalizerTests.java From nd4j with Apache License 2.0 | 6 votes |
public float testItervsDataset(DataNormalization preProcessor) { DataSet dataCopy = data.copy(); DataSetIterator dataIter = new TestDataSetIterator(dataCopy, batchSize); preProcessor.fit(dataCopy); preProcessor.transform(dataCopy); INDArray transformA = dataCopy.getFeatures(); preProcessor.fit(dataIter); dataIter.setPreProcessor(preProcessor); DataSet next = dataIter.next(); INDArray transformB = next.getFeatures(); while (dataIter.hasNext()) { next = dataIter.next(); INDArray transformb = next.getFeatures(); transformB = Nd4j.vstack(transformB, transformb); } return Transforms.abs(transformB.div(transformA).rsub(1)).maxNumber().floatValue(); }
Example 8
Source File: SolverDL4j.java From twse-captcha-solver-dl4j with MIT License | 5 votes |
/** * Describe <code>loadImage</code> method here. * * @param path a <code>File</code> value * @return an <code>INDArray</code> value * @exception IOException if an error occurs */ private INDArray loadImage(File path) throws IOException { int height = 60; int width = 200; int channels = 1; // height, width, channels NativeImageLoader loader = new NativeImageLoader(height, width, channels); INDArray image = loader.asMatrix(path); DataNormalization scaler = new ImagePreProcessingScaler(0, 1); scaler.transform(image); return image; }
Example 9
Source File: Predict.java From dl4j-tutorials with MIT License | 5 votes |
public static void main(String[] args) throws Exception { String testPath = "data/test"; File testDir = new File(testPath); File[] files = testDir.listFiles(); Pair<MultiLayerNetwork, Normalizer> modelAndNormalizer = ModelSerializer .restoreMultiLayerNetworkAndNormalizer(new File("model/AlexNet.zip"), false); NativeImageLoader imageLoader = new NativeImageLoader(256, 256, 3); MultiLayerNetwork network = modelAndNormalizer.getFirst(); DataNormalization normalizer = (DataNormalization) modelAndNormalizer.getSecond(); Map<Integer, String> map = new HashMap<>(); map.put(0, "CITY"); map.put(1, "DESERT"); map.put(2, "FARMLAND"); map.put(3, "LAKE"); map.put(4, "MOUNTAIN"); map.put(5, "OCEAN"); for (File file : files) { INDArray indArray = imageLoader.asMatrix(file); normalizer.transform(indArray); int[] values = network.predict(indArray); String label = map.get(values[0]); System.out.println(file.getName() + "," + label); } }
Example 10
Source File: CatVsDogRecognition.java From Java-Machine-Learning-for-Computer-Vision with MIT License | 5 votes |
private INDArray imageFileToMatrix(File file) throws IOException { NativeImageLoader loader = new NativeImageLoader(224, 224, 3); INDArray image = loader.asMatrix(new FileInputStream(file)); DataNormalization dataNormalization = new VGG16ImagePreProcessor(); dataNormalization.transform(image); return image; }
Example 11
Source File: NormalizationTests.java From DataVec with Apache License 2.0 | 5 votes |
@Test public void testMeanStdZeros() { List<List<Writable>> data = new ArrayList<>(); Schema.Builder builder = new Schema.Builder(); int numColumns = 6; for (int i = 0; i < numColumns; i++) builder.addColumnDouble(String.valueOf(i)); for (int i = 0; i < 5; i++) { List<Writable> record = new ArrayList<>(numColumns); data.add(record); for (int j = 0; j < numColumns; j++) { record.add(new DoubleWritable(1.0)); } } INDArray arr = RecordConverter.toMatrix(data); Schema schema = builder.build(); JavaRDD<List<Writable>> rdd = sc.parallelize(data); DataRowsFacade dataFrame = DataFrames.toDataFrame(schema, rdd); //assert equivalent to the ndarray pre processing NormalizerStandardize standardScaler = new NormalizerStandardize(); standardScaler.fit(new DataSet(arr.dup(), arr.dup())); INDArray standardScalered = arr.dup(); standardScaler.transform(new DataSet(standardScalered, standardScalered)); DataNormalization zeroToOne = new NormalizerMinMaxScaler(); zeroToOne.fit(new DataSet(arr.dup(), arr.dup())); INDArray zeroToOnes = arr.dup(); zeroToOne.transform(new DataSet(zeroToOnes, zeroToOnes)); List<Row> rows = Normalization.stdDevMeanColumns(dataFrame, dataFrame.get().columns()); INDArray assertion = DataFrames.toMatrix(rows); //compare standard deviation assertTrue(standardScaler.getStd().equalsWithEps(assertion.getRow(0), 1e-1)); //compare mean assertTrue(standardScaler.getMean().equalsWithEps(assertion.getRow(1), 1e-1)); }
Example 12
Source File: ModelUtils.java From gluon-samples with BSD 3-Clause "New" or "Revised" License | 5 votes |
public void trainModel(MultiLayerNetwork model, boolean invertColors, List<InputStream> customImage, List<Integer> customLabel) throws Exception { List<INDArray> extraFeatures = new LinkedList<>(); List<Integer> extraLabels = new LinkedList<>(); for (int i = 0; i < customImage.size(); i++) { NativeImageLoader loader = new NativeImageLoader(width, height, channels); DataNormalization scaler = invertColors ? new ImagePreProcessingScaler(1, 0) : new ImagePreProcessingScaler(0, 1); INDArray feature = loader.asMatrix(customImage.get(i)); scaler.transform(feature); extraFeatures.add(feature); extraLabels.add(customLabel.get(i)); } trainModel(model, extraFeatures, extraLabels); }
Example 13
Source File: ModelUtils.java From gluon-samples with BSD 3-Clause "New" or "Revised" License | 5 votes |
private String predict(MultiLayerNetwork model, INDArray nd, boolean invertColors) { // invert black-white DataNormalization scaler = new ImagePreProcessingScaler(invertColors? 1 : 0, invertColors ? 0 :1); scaler.transform(nd); preprocess(nd); // System.out.println("I have to predict "+nd); int p = model.predict(nd)[0]; System.out.println("prediction = "+model.predict(nd)[0]); return String.valueOf(p); }
Example 14
Source File: IrisClassifier.java From tutorials with MIT License | 4 votes |
public static void main(String[] args) throws IOException, InterruptedException { DataSet allData; try (RecordReader recordReader = new CSVRecordReader(0, ',')) { recordReader.initialize(new FileSplit(new ClassPathResource("iris.txt").getFile())); DataSetIterator iterator = new RecordReaderDataSetIterator(recordReader, 150, FEATURES_COUNT, CLASSES_COUNT); allData = iterator.next(); } allData.shuffle(42); DataNormalization normalizer = new NormalizerStandardize(); normalizer.fit(allData); normalizer.transform(allData); SplitTestAndTrain testAndTrain = allData.splitTestAndTrain(0.65); DataSet trainingData = testAndTrain.getTrain(); DataSet testData = testAndTrain.getTest(); MultiLayerConfiguration configuration = new NeuralNetConfiguration.Builder() .iterations(1000) .activation(Activation.TANH) .weightInit(WeightInit.XAVIER) .regularization(true) .learningRate(0.1).l2(0.0001) .list() .layer(0, new DenseLayer.Builder().nIn(FEATURES_COUNT).nOut(3) .build()) .layer(1, new DenseLayer.Builder().nIn(3).nOut(3) .build()) .layer(2, new OutputLayer.Builder(LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD) .activation(Activation.SOFTMAX) .nIn(3).nOut(CLASSES_COUNT).build()) .backpropType(BackpropType.Standard).pretrain(false) .build(); MultiLayerNetwork model = new MultiLayerNetwork(configuration); model.init(); model.fit(trainingData); INDArray output = model.output(testData.getFeatures()); Evaluation eval = new Evaluation(CLASSES_COUNT); eval.eval(testData.getLabels(), output); System.out.println(eval.stats()); }
Example 15
Source File: NormalizationTests.java From deeplearning4j with Apache License 2.0 | 4 votes |
@Test public void normalizationTests() { List<List<Writable>> data = new ArrayList<>(); Schema.Builder builder = new Schema.Builder(); int numColumns = 6; for (int i = 0; i < numColumns; i++) builder.addColumnDouble(String.valueOf(i)); for (int i = 0; i < 5; i++) { List<Writable> record = new ArrayList<>(numColumns); data.add(record); for (int j = 0; j < numColumns; j++) { record.add(new DoubleWritable(1.0)); } } INDArray arr = RecordConverter.toMatrix(DataType.DOUBLE, data); Schema schema = builder.build(); JavaRDD<List<Writable>> rdd = sc.parallelize(data); assertEquals(schema, DataFrames.fromStructType(DataFrames.fromSchema(schema))); assertEquals(rdd.collect(), DataFrames.toRecords(DataFrames.toDataFrame(schema, rdd)).getSecond().collect()); Dataset<Row> dataFrame = DataFrames.toDataFrame(schema, rdd); dataFrame.show(); Normalization.zeromeanUnitVariance(dataFrame).show(); Normalization.normalize(dataFrame).show(); //assert equivalent to the ndarray pre processing NormalizerStandardize standardScaler = new NormalizerStandardize(); standardScaler.fit(new DataSet(arr.dup(), arr.dup())); INDArray standardScalered = arr.dup(); standardScaler.transform(new DataSet(standardScalered, standardScalered)); DataNormalization zeroToOne = new NormalizerMinMaxScaler(); zeroToOne.fit(new DataSet(arr.dup(), arr.dup())); INDArray zeroToOnes = arr.dup(); zeroToOne.transform(new DataSet(zeroToOnes, zeroToOnes)); INDArray zeroMeanUnitVarianceDataFrame = RecordConverter.toMatrix(DataType.DOUBLE, Normalization.zeromeanUnitVariance(schema, rdd).collect()); INDArray zeroMeanUnitVarianceDataFrameZeroToOne = RecordConverter.toMatrix(DataType.DOUBLE, Normalization.normalize(schema, rdd).collect()); assertEquals(standardScalered, zeroMeanUnitVarianceDataFrame); assertTrue(zeroToOnes.equalsWithEps(zeroMeanUnitVarianceDataFrameZeroToOne, 1e-1)); }
Example 16
Source File: ModelUtils.java From gluon-samples with BSD 3-Clause "New" or "Revised" License | 4 votes |
public static Thread train() { Thread t = new Thread() { @Override public void run() { while (true) { try { List<TrainRequest> toProcess = new LinkedList<>(); synchronized (trainRequests) { if (trainRequests.isEmpty()) { System.out.println("Waiting for train requests..."); trainRequests.wait(); System.out.println("Got train requests..."); } toProcess.addAll(trainRequests); trainRequests.clear(); } List<INDArray> features = new ArrayList<>(toProcess.size()); List<Integer> labels = new ArrayList<>(toProcess.size()); for (TrainRequest request : toProcess) { NativeImageLoader loader = new NativeImageLoader(width, height, channels); DataNormalization scaler = request.invert ? new ImagePreProcessingScaler(1, 0) : new ImagePreProcessingScaler(0, 1); INDArray f = loader.asMatrix(new ByteArrayInputStream(request.b)); scaler.transform(f); features.add(f); labels.add(request.label); } MultiLayerNetwork result = trainModel(latestModel, features, labels); if (callback != null) { // this is synchronous! System.out.println("invoking callback, Synchronous call!"); callback.accept(result); System.out.println("invoked callback,"); } } catch (Exception e) { e.printStackTrace(); } } } }; t.start(); return t; }
Example 17
Source File: NormalizationTests.java From DataVec with Apache License 2.0 | 4 votes |
@Test public void normalizationTests() { List<List<Writable>> data = new ArrayList<>(); Schema.Builder builder = new Schema.Builder(); int numColumns = 6; for (int i = 0; i < numColumns; i++) builder.addColumnDouble(String.valueOf(i)); for (int i = 0; i < 5; i++) { List<Writable> record = new ArrayList<>(numColumns); data.add(record); for (int j = 0; j < numColumns; j++) { record.add(new DoubleWritable(1.0)); } } INDArray arr = RecordConverter.toMatrix(data); Schema schema = builder.build(); JavaRDD<List<Writable>> rdd = sc.parallelize(data); assertEquals(schema, DataFrames.fromStructType(DataFrames.fromSchema(schema))); assertEquals(rdd.collect(), DataFrames.toRecords(DataFrames.toDataFrame(schema, rdd)).getSecond().collect()); DataRowsFacade dataFrame = DataFrames.toDataFrame(schema, rdd); dataFrame.get().show(); Normalization.zeromeanUnitVariance(dataFrame).get().show(); Normalization.normalize(dataFrame).get().show(); //assert equivalent to the ndarray pre processing NormalizerStandardize standardScaler = new NormalizerStandardize(); standardScaler.fit(new DataSet(arr.dup(), arr.dup())); INDArray standardScalered = arr.dup(); standardScaler.transform(new DataSet(standardScalered, standardScalered)); DataNormalization zeroToOne = new NormalizerMinMaxScaler(); zeroToOne.fit(new DataSet(arr.dup(), arr.dup())); INDArray zeroToOnes = arr.dup(); zeroToOne.transform(new DataSet(zeroToOnes, zeroToOnes)); INDArray zeroMeanUnitVarianceDataFrame = RecordConverter.toMatrix(Normalization.zeromeanUnitVariance(schema, rdd).collect()); INDArray zeroMeanUnitVarianceDataFrameZeroToOne = RecordConverter.toMatrix(Normalization.normalize(schema, rdd).collect()); assertEquals(standardScalered, zeroMeanUnitVarianceDataFrame); assertTrue(zeroToOnes.equalsWithEps(zeroMeanUnitVarianceDataFrameZeroToOne, 1e-1)); }
Example 18
Source File: DeepLearning.java From hack-a-drone with Apache License 2.0 | 4 votes |
private void normalizeImage(final INDArray image) { DataNormalization scaler = new VGG16ImagePreProcessor(); scaler.transform(image); }
Example 19
Source File: DeepLearning4J_CSV_Iris_Model.java From kafka-streams-machine-learning-examples with Apache License 2.0 | 4 votes |
public static void main(String[] args) throws Exception { // First: get the dataset using the record reader. CSVRecordReader handles // loading/parsing int numLinesToSkip = 0; char delimiter = ','; RecordReader recordReader = new CSVRecordReader(numLinesToSkip, delimiter); recordReader.initialize(new FileSplit(new ClassPathResource("DL4J_Resources/iris.txt").getFile())); // Second: the RecordReaderDataSetIterator handles conversion to DataSet // objects, ready for use in neural network int labelIndex = 4; // 5 values in each row of the iris.txt CSV: 4 input features followed by an // integer label (class) index. Labels are the 5th value (index 4) in each row int numClasses = 3; // 3 classes (types of iris flowers) in the iris data set. Classes have integer // values 0, 1 or 2 int batchSize = 150; // Iris data set: 150 examples total. We are loading all of them into one // DataSet (not recommended for large data sets) DataSetIterator iterator = new RecordReaderDataSetIterator(recordReader, batchSize, labelIndex, numClasses); DataSet allData = iterator.next(); allData.shuffle(); SplitTestAndTrain testAndTrain = allData.splitTestAndTrain(0.65); // Use 65% of data for training DataSet trainingData = testAndTrain.getTrain(); DataSet testData = testAndTrain.getTest(); // We need to normalize our data. We'll use NormalizeStandardize (which gives us // mean 0, unit variance): DataNormalization normalizer = new NormalizerStandardize(); normalizer.fit(trainingData); // Collect the statistics (mean/stdev) from the training data. This does not // modify the input data normalizer.transform(trainingData); // Apply normalization to the training data normalizer.transform(testData); // Apply normalization to the test data. This is using statistics calculated // from the *training* set final int numInputs = 4; int outputNum = 3; long seed = 6; log.info("Build model...."); MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder().seed(seed).activation(Activation.TANH) .weightInit(WeightInit.XAVIER).updater(new Sgd(0.1)).l2(1e-4).list() .layer(0, new DenseLayer.Builder().nIn(numInputs).nOut(3).build()) .layer(1, new DenseLayer.Builder().nIn(3).nOut(3).build()) .layer(2, new OutputLayer.Builder(LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD) .activation(Activation.SOFTMAX).nIn(3).nOut(outputNum).build()) .build(); // run the model MultiLayerNetwork model = new MultiLayerNetwork(conf); model.init(); model.setListeners(new ScoreIterationListener(100)); for (int i = 0; i < 1000; i++) { model.fit(trainingData); } // evaluate the model on the test set Evaluation eval = new Evaluation(3); INDArray input = testData.getFeatures(); INDArray output = model.output(input); System.out.println("INPUT:" + input.toString()); eval.eval(testData.getLabels(), output); log.info(eval.stats()); // Save the model File locationToSave = new File("src/main/resources/generatedModels/DL4J/DL4J_Iris_Model.zip"); // Where to save // the network. // Note: the file // is in .zip // format - can // be opened // externally boolean saveUpdater = true; // Updater: i.e., the state for Momentum, RMSProp, Adagrad etc. Save this if you // want to train your network more in the future // ModelSerializer.writeModel(model, locationToSave, saveUpdater); // Load the model MultiLayerNetwork restored = ModelSerializer.restoreMultiLayerNetwork(locationToSave); System.out.println("Saved and loaded parameters are equal: " + model.params().equals(restored.params())); System.out.println("Saved and loaded configurations are equal: " + model.getLayerWiseConfigurations().equals(restored.getLayerWiseConfigurations())); }