Skip to content

Frequently asked questions and answers

Wenqi Li edited this page May 26, 2020 · 16 revisions

A list of frequently asked questions and answers maintained by the core developer team, based on user feedback and discussions.

Q1. The randomised data transformations generate insufficiently shuffled outputs. How can I resolve this issue?

Q2. How do I sample 2D slices from 3D volumes?


Q1. The randomised data transformations generate insufficiently shuffled outputs. How can I resolve this issue?

This is likely because the random number generator in MONAI is duplicated when multiple workers are initialised by torch.utils.data.Dataloader (see also Pytorch FAQ, #398).

A possible solution is to set up random seeds in workers via the worker_init_fn option:

def worker_init_fn(worker_id):
    worker_info = torch.utils.data.get_worker_info()
    try:
        worker_info.dataset.transform.set_random_state(worker_info.seed % (2 ** 32))
    except AttributeError:
        pass

dataloader = torch.utils.data.DataLoader(..., worker_init_fn=worker_init_fn)

Q2. How to sample 2D slices from 3D volumes?

This could be achieved by setting a 3D window size, followed by "squeezing" the length one spatial dimension (see also: #299). For example,

train_transforms = Compose([
    ...
    RandSpatialCropd(keys=['img', 'seg'], roi_size=[96, 96, 1], random_size=False),
    SqueezeDimd(keys=['img', 'seg'], dim=-1),  # remove the last spatial dimension
    ...
])
Clone this wiki locally