Closed
Description
Describe the bug
When applying the RandRotated transform to MetaTensor converted from numpy arrays, an error showed up:
RuntimeError: result type Float can't be cast to the desired output type Int
I am not sure if this is caused by my implementation error or bugs.
Before this error appeared, some lines (perhaps warning ?) were printed:
> collate dict key "image" out of 4 keys
>> collate/stack a list of tensors
> collate dict key "label" out of 4 keys
>> collate/stack a list of tensors
> collate dict key "image_transforms" out of 4 keys
>> collate list of sizes: [1, 1].
collate dict key "class" out of 3 keys
collate dict key "id" out of 3 keys
collate dict key "orig_size" out of 3 keys
>>>> collate list of sizes: [2, 2].
> collate dict key "label_transforms" out of 4 keys
>> collate list of sizes: [1, 1].
collate dict key "class" out of 3 keys
collate dict key "id" out of 3 keys
collate dict key "orig_size" out of 3 keys
>>>> collate list of sizes: [2, 2].
To Reproduce
import numpy as np
from monai.transforms import Compose, ToTensord, RandRotated
from monai.data import CacheDataset, DataLoader
dummy_image_1 = np.random.rand(1, 128, 128)
dummy_image_2 = np.random.rand(1, 128, 128)
dummy_label_1 = np.random.randint(3, size=(1, 128, 128))
dummy_label_2 = np.random.randint(3, size=(1, 128, 128))
train_np = [
{"image": dummy_image_1,
"label": dummy_label_1},
{"image": dummy_image_2,
"label": dummy_label_2},
{"image": dummy_image_1,
"label": dummy_label_1},
{"image": dummy_image_2,
"label": dummy_label_2},
]
keys = ["image", "label"]
transforms = Compose(
[ToTensord(keys=keys, track_meta=True),
RandRotated(
keys=keys,
range_x=[- np.pi, np.pi],
mode=["bilinear", "nearest"],
padding_mode="zeros",
prob=0.2,
)
]
)
train_ds = CacheDataset(
data=train_np, transform=transforms, cache_rate=1.0
)
train_dl = DataLoader(
dataset=train_ds,
batch_size=2,
num_workers=10,
pin_memory=True,
shuffle=True)
batch = next(iter(train_dl))
The error occurred after multiple executions of batch = next(iter(train_dl))
(To imitate the behavior of the batch creation and loading during the training).
Expected behavior
The transformations of images and labels without error.
Environment
================================
Printing MONAI config...
================================
MONAI version: 0.9.1
Numpy version: 1.23.1
Pytorch version: 1.11.0
MONAI flags: HAS_EXT = False, USE_COMPILED = False, USE_META_DICT = False
MONAI rev id: 356d2d2f41b473f588899d705bbc682308cee52c
MONAI __file__: C:\Users\ling\.conda\envs\HJDL\lib\site-packages\monai\__init__.py
Optional dependencies:
Pytorch Ignite version: NOT INSTALLED or UNKNOWN VERSION.
Nibabel version: 4.0.1
scikit-image version: 0.19.3
Pillow version: 9.2.0
Tensorboard version: 2.9.1
gdown version: NOT INSTALLED or UNKNOWN VERSION.
TorchVision version: 0.12.0
tqdm version: 4.64.0
lmdb version: NOT INSTALLED or UNKNOWN VERSION.
psutil version: 5.9.1
pandas version: NOT INSTALLED or UNKNOWN VERSION.
einops version: 0.4.1
transformers version: NOT INSTALLED or UNKNOWN VERSION.
mlflow version: NOT INSTALLED or UNKNOWN VERSION.
pynrrd version: NOT INSTALLED or UNKNOWN VERSION.
For details about installing the optional dependencies, please visit:
https://docs.monai.io/en/latest/installation.html#installing-the-recommended-dependencies
================================
Printing system config...
================================
System: Windows
Win32 version: ('10', '10.0.19044', 'SP0', 'Multiprocessor Free')
Win32 edition: Professional
Platform: Windows-10-10.0.19044-SP0
Processor: Intel64 Family 6 Model 141 Stepping 1, GenuineIntel
Machine: AMD64
Python version: 3.10.4
Process name: python.exe
Command: ['C:\\Users\\ling\\.conda\\envs\\HJDL\\python.exe', '-m', 'spyder_kernels.console', '-f', 'C:\\Users\\ling\\AppData\\Roaming\\jupyter\\runtime\\kernel-be6bb7edb7da.json']
Open files: [popenfile(path='C:\\Users\\ling\\AppData\\Roaming\\.anaconda\\navigator\\.anaconda\\navigator\\scripts\\HJDL\\spyder-out-1.txt', fd=-1), popenfile(path='C:\\Users\\ling\\AppData\\Local\\Temp\\spyder\\kernel-be6bb7edb7da.stderr', fd=-1), popenfile(path='C:\\Users\\ling\\AppData\\Local\\Temp\\spyder\\kernel-be6bb7edb7da.fault', fd=-1), popenfile(path='C:\\Users\\ling\\AppData\\Local\\Temp\\spyder\\kernel-be6bb7edb7da.stdout', fd=-1), popenfile(path='C:\\Users\\ling\\.ipython\\profile_default\\history.sqlite', fd=-1), popenfile(path='C:\\Users\\ling\\AppData\\Roaming\\.anaconda\\navigator\\.anaconda\\navigator\\scripts\\HJDL\\spyder-err-1.txt', fd=-1), popenfile(path='C:\\Windows\\System32\\en-US\\KernelBase.dll.mui', fd=-1), popenfile(path='C:\\Windows\\System32\\en-US\\kernel32.dll.mui', fd=-1)]
Num physical CPUs: 6
Num logical CPUs: 12
Num usable CPUs: 12
CPU usage (%): [12.0, 2.6, 11.6, 3.9, 5.5, 2.9, 5.0, 2.8, 3.9, 3.1, 3.7, 10.2]
CPU freq. (MHz): 2918
Load avg. in last 1, 5, 15 mins (%): [0.0, 0.0, 0.0]
Disk usage (%): 60.3
Avg. sensor temp. (Celsius): UNKNOWN for given OS
Total physical memory (GB): 31.7
Available memory (GB): 19.2
Used memory (GB): 12.5
================================
Printing GPU config...
================================
Num GPUs: 1
Has CUDA: True
CUDA version: 11.3
cuDNN enabled: True
cuDNN version: 8200
Current device: 0
Library compiled for CUDA architectures: ['sm_37', 'sm_50', 'sm_60', 'sm_61', 'sm_70', 'sm_75', 'sm_80', 'sm_86', 'compute_37']
GPU 0 Name: NVIDIA T1200 Laptop GPU
GPU 0 Is integrated: False
GPU 0 Is multi GPU board: False
GPU 0 Multi processor count: 16
GPU 0 Total memory (GB): 4.0
GPU 0 CUDA capability (maj.min): 7.5
Metadata
Metadata
Assignees
Labels
No labels