(self, data: torch.Tensor, transform)
| 1157 | return self.inverse_transform(data, transform) |
| 1158 | |
| 1159 | def inverse_transform(self, data: torch.Tensor, transform) -> torch.Tensor: |
| 1160 | if transform[TraceKeys.EXTRA_INFO]["do_padcrop"]: |
| 1161 | orig_size = transform[TraceKeys.ORIG_SIZE] |
| 1162 | pad_or_crop = ResizeWithPadOrCrop(spatial_size=orig_size, mode="edge") |
| 1163 | padcrop_xform = transform[TraceKeys.EXTRA_INFO]["padcrop"] |
| 1164 | padcrop_xform[TraceKeys.EXTRA_INFO]["pad_info"][TraceKeys.ID] = TraceKeys.NONE |
| 1165 | padcrop_xform[TraceKeys.EXTRA_INFO]["crop_info"][TraceKeys.ID] = TraceKeys.NONE |
| 1166 | # this uses inverse because spatial_size // 2 in the forward pass of center crop may cause issues |
| 1167 | data = pad_or_crop.inverse_transform(data, padcrop_xform) # type: ignore |
| 1168 | # Create inverse transform |
| 1169 | mode = transform[TraceKeys.EXTRA_INFO]["mode"] |
| 1170 | align_corners = transform[TraceKeys.EXTRA_INFO]["align_corners"] |
| 1171 | dtype = transform[TraceKeys.EXTRA_INFO]["dtype"] |
| 1172 | inverse_transform = Resize(spatial_size=transform[TraceKeys.ORIG_SIZE]) |
| 1173 | # Apply inverse |
| 1174 | with inverse_transform.trace_transform(False): |
| 1175 | out = inverse_transform( |
| 1176 | data, mode=mode, align_corners=None if align_corners == TraceKeys.NONE else align_corners, dtype=dtype |
| 1177 | ) |
| 1178 | return out |
| 1179 | |
| 1180 | |
| 1181 | class Rotate90(InvertibleTransform, LazyTransform): |
no test coverage detected