-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Description
I am training a U-Net with FCN (decode and aux) head and the model is trained perfectly when the workflow is
workflow = [('train', 1)]
when I change the workflow to include validation as follows:
workflow = [('train', 1), ('val', 1)]
I get the following error:
/content/pldu_mmsegmentation/mmseg/apis/train.py in train_segmentor(model, dataset, cfg, distributed, validate, timestamp, meta)
114 elif cfg.load_from:
115 runner.load_checkpoint(cfg.load_from)
--> 116 runner.run(data_loaders, cfg.workflow)
/usr/local/lib/python3.6/dist-packages/mmcv/runner/iter_based_runner.py in run(self, data_loaders, workflow, max_iters, **kwargs)
128 if mode == 'train' and self.iter >= self._max_iters:
129 break
--> 130 iter_runner(iter_loaders[i], **kwargs)
131
132 time.sleep(1) # wait for some hooks like loggers to finish
/usr/local/lib/python3.6/dist-packages/mmcv/runner/iter_based_runner.py in val(self, data_loader, **kwargs)
74 self.call_hook('before_val_iter')
75 data_batch = next(data_loader)
---> 76 outputs = self.model.val_step(data_batch, **kwargs)
77 if not isinstance(outputs, dict):
78 raise TypeError('model.val_step() must return a dict')
/usr/local/lib/python3.6/dist-packages/mmcv/parallel/data_parallel.py in val_step(self, *inputs, **kwargs)
87
88 inputs, kwargs = self.scatter(inputs, kwargs, self.device_ids)
---> 89 return self.module.val_step(*inputs[0], **kwargs[0])
/content/pldu_mmsegmentation/mmseg/models/segmentors/base.py in val_step(self, data_batch, **kwargs)
167 not implemented with this method, but an evaluation hook.
168 """
--> 169 output = self(**data_batch, **kwargs)
170 # loss, log_vars = self._parse_losses(output)
171 # log_vars_val = OrderedDict()
/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py in _call_impl(self, *input, **kwargs)
725 result = self._slow_forward(*input, **kwargs)
726 else:
--> 727 result = self.forward(*input, **kwargs)
728 for hook in itertools.chain(
729 _global_forward_hooks.values(),
/usr/local/lib/python3.6/dist-packages/mmcv/runner/fp16_utils.py in new_func(*args, **kwargs)
82 'method of nn.Module')
83 if not (hasattr(args[0], 'fp16_enabled') and args[0].fp16_enabled):
---> 84 return old_func(*args, **kwargs)
85 # get the arg spec of the decorated method
86 args_info = getfullargspec(old_func)
/content/pldu_mmsegmentation/mmseg/models/segmentors/base.py in forward(self, img, img_metas, return_loss, **kwargs)
120 """
121 if return_loss:
--> 122 return self.forward_train(img, img_metas, **kwargs)
123 else:
124 return self.forward_test(img, img_metas, **kwargs)
TypeError: forward_train() missing 1 required positional argument: 'gt_semantic_seg'
Kindly help me solve this problem.
Thanks