djl: NullPointerException on trainer initializing

hey 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 …

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Comments: 22 (10 by maintainers)

Most upvoted 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