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)
Top GitHub Comments
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.