(
self,
rand_size: Sequence[int],
pad: int = 0,
pad_val: float = 0,
low: float = -1.0,
high: float = 1.0,
channels: int = 1,
spatial_size: Sequence[int] | None = None,
mode: str = InterpolateMode.AREA,
align_corners: bool | None = None,
device: torch.device | None = None,
)
| 57 | backend = [TransformBackends.TORCH] |
| 58 | |
| 59 | def __init__( |
| 60 | self, |
| 61 | rand_size: Sequence[int], |
| 62 | pad: int = 0, |
| 63 | pad_val: float = 0, |
| 64 | low: float = -1.0, |
| 65 | high: float = 1.0, |
| 66 | channels: int = 1, |
| 67 | spatial_size: Sequence[int] | None = None, |
| 68 | mode: str = InterpolateMode.AREA, |
| 69 | align_corners: bool | None = None, |
| 70 | device: torch.device | None = None, |
| 71 | ): |
| 72 | self.rand_size = tuple(rand_size) |
| 73 | self.pad = pad |
| 74 | self.low = low |
| 75 | self.high = high |
| 76 | self.channels = channels |
| 77 | self.mode = mode |
| 78 | self.align_corners = align_corners |
| 79 | self.device = device |
| 80 | |
| 81 | self.spatial_size: Sequence[int] | None = None |
| 82 | self.spatial_zoom: Sequence[float] | None = None |
| 83 | |
| 84 | if low >= high: |
| 85 | raise ValueError("Value for `low` must be less than `high` otherwise field will be zeros") |
| 86 | |
| 87 | self.total_rand_size = tuple(rs + self.pad * 2 for rs in self.rand_size) |
| 88 | |
| 89 | self.field = torch.ones((1, self.channels) + self.total_rand_size, device=self.device) * pad_val |
| 90 | |
| 91 | self.crand_size = (self.channels,) + self.rand_size |
| 92 | |
| 93 | pad_slice = slice(None) if self.pad == 0 else slice(self.pad, -self.pad) |
| 94 | self.rand_slices = (0, slice(None)) + (pad_slice,) * len(self.rand_size) |
| 95 | |
| 96 | self.set_spatial_size(spatial_size) |
| 97 | |
| 98 | def randomize(self, data: Any | None = None) -> None: |
| 99 | self.field[self.rand_slices] = torch.from_numpy(self.R.uniform(self.low, self.high, self.crand_size)) # type: ignore[index] |
no test coverage detected