-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Description
Command used for Sliding Window Inference (Error on Monai 0.4.0 but its working fine on 0.3.0)
Code Snippet:
for val_data in self.val_loader:
val_step_start_time = time.time()
val_images, val_labels = val_data["image"].to(self.device), val_data["label"].to(self.device)
roi_size = (128, 128, 128)
sw_batch_size = 6
if amp:
with torch.cuda.amp.autocast():
val_outputs = sliding_window_inference(val_images, roi_size, sw_batch_size, self.network, sw_device=self.device, device=self.device)
else:
val_outputs = sliding_window_inference(val_images, roi_size, sw_batch_size, self.network)
Getting same error with and without amp
Network Used (DynUNet as proposed in tutorial):
self.device = torch.device("cuda:0")
sizes, spacings = [128, 128, 128], [1.83723155, 1.83723155, 2.42438879]
n_class, in_channels = 2, 1
best_dice, best_epoch = (n_class - 1) * [0], (n_class - 1) * [0]
strides, kernels = [], []
while True:
spacing_ratio = [sp / min(spacings) for sp in spacings]
stride = [2 if ratio <= 2 and size >= 8 else 1 for (ratio, size) in zip(spacing_ratio, sizes)]
kernel = [3 if ratio <= 2 else 1 for ratio in spacing_ratio]
if all(s == 1 for s in stride):
break
sizes = [i / j for i, j in zip(sizes, stride)]
spacings = [i * j for i, j in zip(spacings, stride)]
kernels.append(kernel)
strides.append(stride)
strides.insert(0, len(spacings) * [1])
kernels.append(len(spacings) * [3])
self.network = DynUNet(
spatial_dims=3,
in_channels=in_channels,
out_channels=n_class,
kernel_size=kernels,
strides=strides,
upsample_kernel_size=strides[1:],
norm_name="instance",
deep_supervision=True,
deep_supr_num=2,
res_block=False,
).to(self.device)
Error:
AttributeError Traceback (most recent call last)
/data/archit/Liver/Experiments/monai/main.py in
25
26 if name == "main":
---> 27 main()
/data/archit/Liver/Experiments/monai/main.py in main()
19 if args.continue_training == True:
20 trainer.load_best_checkpoint()
---> 21 trainer.trainProcess(amp=True)
22
23
/data/archit/Liver/Experiments/monai/TeraReconAI/train/segmentationTrainer.py in trainProcess(self, amp)
71 self.initialize_network()
72 amp_start = time.time()
---> 73 super()._trainProcess(amp)
74 amp_total_time = time.time() - amp_start
75 print(f"Total training time with AMP: {amp_total_time:.4f}")
/data/archit/Liver/Experiments/monai/TeraReconAI/train/trainer.py in _trainProcess(self, amp)
168 # else:
169 self.network = self.network.to(self.device)
--> 170 val_outputs = sliding_window_inference(val_images, roi_size, sw_batch_size, self.network, sw_device=self.device, device=self.device)
171
172
/data/archit/Software/anaconda3/envs/monai/lib/python3.8/site-packages/monai/inferers/utils.py in sliding_window_inference(inputs, roi_size, sw_batch_size, predictor, overlap, mode, sigma_scale, padding_mode, cval, sw_device, device, *args, **kwargs)
127 ]
128 window_data = torch.cat([inputs[win_slice] for win_slice in unravel_slice]).to(sw_device)
--> 129 seg_prob = predictor(window_data, *args, **kwargs).to(device) # batched patch segmentation
130
131 if not _initialized: # init. buffer at the first iteration
AttributeError: 'list' object has no attribute 'to'