NullPointerException on trainer initializing
See original GitHub issuehey why i m getting error while setting shape with trainer and initializing it heres my code:
**` Model model = Model.newInstance(“pikachu-ssd”); float detectionThreshold = 0.6f; // load parameters back to original training block model.setBlock(ssd); // append prediction logic at end of training block with parameter loaded Block ssdTrain = model.getBlock(); model.setBlock(ssdPredict); var epoch=10; var train_config= new DefaultTrainingConfig(new SingleShotDetectionLoss()) .addEvaluator(new SingleShotDetectionAccuracy(“classAccuracy”)) .addEvaluator(new BoundingBoxError(“boundingBoxError”)) .optDevices(new Device[]{Device.gpu(0)}) .addTrainingListeners(TrainingListener.Defaults.logging()); Trainer trainer = model.newTrainer(train_config); SingleShotDetectionTranslator translator = SingleShotDetectionTranslator.builder() .addTransform(new ToTensor()) .optSynset(Collections.singletonList(“pikachu”)) .optThreshold(detectionThreshold) .build(); trainer.setMetrics(new Metrics()); System.out.println(“whaaat”); trainer.initialize(new Shape(150, 3, 256, 256)); for (int i = 0; i < epoch; ++i) { int index = 0; for (var batch : trainer.iterateDataset(pikachuData)) { System.out.println(“loo”); EasyTrain.trainBatch(trainer, batch); trainer.step(); batch.close(); } // reset training and validation evaluators at end of epoch trainer.notifyListeners(listener -> listener.onEpoch(trainer));
}`**
And I m Getting This : `** java.lang.NullPointerException: null
at ai.djl.mxnet.engine.MxNDArray.createGradient(MxNDArray.java:244)
at ai.djl.mxnet.engine.MxNDArray.attachGradient(MxNDArray.java:229)
at ai.djl.nn.Parameter.initialize(Parameter.java:213)
at ai.djl.nn.AbstractBlock.initialize(AbstractBlock.java:269)
at ai.djl.nn.SequentialBlock.initializeChildBlocks(SequentialBlock.java:143)
at ai.djl.nn.AbstractBlock.initialize(AbstractBlock.java:271)
at ai.djl.nn.SequentialBlock.initializeChildBlocks(SequentialBlock.java:143)
at ai.djl.nn.AbstractBlock.initialize(AbstractBlock.java:271)
at ai.djl.basicmodelzoo.cv.object_detection.ssd.SingleShotDetection.initialize(SingleShotDetection.java:184)
at ai.djl.nn.SequentialBlock.initializeChildBlocks(SequentialBlock.java:143)
at ai.djl.nn.AbstractBlock.initialize(AbstractBlock.java:271)
at ai.djl.training.Trainer.initialize(Trainer.java:113)
at .(#249:1)**
` No clues whats pointing this error heres my maven and import tree take a look:
%maven ai.djl:api:0.10.0 %maven ai.djl:model-zoo:0.10.0 %maven ai.djl.mxnet:mxnet-engine:0.10.0 %maven ai.djl.mxnet:mxnet-model-zoo:0.10.0 %maven org.slf4j:slf4j-api:1.7.26 %maven org.slf4j:slf4j-simple:1.7.26 %maven net.java.dev.jna:jna:5.3.0 %maven ai.djl:basicdataset:0.10.0 // See https://github.com/awslabs/djl/blob/master/mxnet/mxnet-engine/README.md // for more MXNet library selection options %maven ai.djl.mxnet:mxnet-native-cu101mkl:1.7.0-backport import ai.djl.Device; import ai.djl.MalformedModelException; import ai.djl.Model; import ai.djl.basicdataset.cv.PikachuDetection; import ai.djl.basicmodelzoo.cv.object_detection.ssd.SingleShotDetection; //import ai.djl.examples.training.util.Arguments; import ai.djl.inference.Predictor; import ai.djl.metric.Metrics; import ai.djl.modality.cv.Image; import ai.djl.modality.cv.ImageFactory; import ai.djl.modality.cv.MultiBoxDetection; import ai.djl.modality.cv.output.DetectedObjects; import ai.djl.modality.cv.transform.ToTensor; import ai.djl.modality.cv.translator.SingleShotDetectionTranslator; import ai.djl.ndarray.NDArray; import ai.djl.ndarray.NDList; import ai.djl.ndarray.types.Shape; import ai.djl.nn.Block; import ai.djl.nn.LambdaBlock; import ai.djl.nn.SequentialBlock; import ai.djl.training.DefaultTrainingConfig; import ai.djl.training.EasyTrain; import ai.djl.training.Trainer; import ai.djl.training.TrainingResult; import ai.djl.training.dataset.Dataset; import ai.djl.training.dataset.RandomAccessDataset; import ai.djl.training.evaluator.BoundingBoxError; import ai.djl.training.evaluator.SingleShotDetectionAccuracy; import ai.djl.training.listener.SaveModelTrainingListener; import ai.djl.training.listener.TrainingListener; import ai.djl.training.loss.SingleShotDetectionLoss; import ai.djl.training.util.ProgressBar; import ai.djl.translate.Pipeline; import ai.djl.translate.TranslateException; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List;**
help me out please …
Issue Analytics
- State:
- Created 2 years ago
- Comments:22 (10 by maintainers)
Looking at your code again, you are setting the model to use ssdPredictBlock, but it should be ssdTrainBlock. The SingleShotDetectionLoss is expecting the output you would get from a train block
Closing old issue, feel free to re-open it if you still have questions.