尝试在 monai 中创建缓存数据集:LinAlgError:SVD 未收敛

问题描述 投票:0回答:1

这是我收到的错误:

LinAlgError: SVD did not converge

The above exception was the direct cause of the following exception:

RuntimeError                              Traceback (most recent call last)
/usr/local/lib/python3.10/dist-packages/monai/transforms/transform.py in apply_transform(transform, data, map_items, unpack_items, log_stats, lazy, overrides)
    169             else:
    170                 _log_stats(data=data)
--> 171         raise RuntimeError(f"applying transform {transform}") from e
    172 
    173 

RuntimeError: applying transform <monai.transforms.io.dictionary.LoadImaged object at 0x7fde4bb5fca0>

这是我的代码:

# The paths are to every image or segmentation, type: <str>
train_files = [{"vol": image_name, "seg": label_name} for image_name, label_name in zip(path_train_volumes, path_train_segmentation)]
test_files = [{"vol": image_name, "seg": label_name} for image_name, label_name in zip(path_test_volumes, path_test_segmentation)]
dict_keys = ["vol", "seg"]

train_transforms = Compose(
    [
        LoadImaged(keys=dict_keys),
        EnsureChannelFirstd(keys=dict_keys),
        Orientationd(keys=dict_keys, axcodes="RAS"),
        ScaleIntensityRanged(keys=dict_keys, a_min=0, a_max=700, b_min=0.0, b_max=1.0, clip=True),
        CropForegroundd(keys=dict_keys, source_key="vol"),
        Resized(keys=dict_keys, spatial_size=[256, 256, 155]),
        ToTensord(keys=dict_keys)
    ]
)

test_transforms = Compose(
    [
        LoadImaged(keys=dict_keys),
        EnsureChannelFirstd(keys=dict_keys),
        Orientationd(keys=dict_keys, axcodes="RAS"),
        ScaleIntensityRanged(keys=dict_keys, a_min=0, a_max=700, b_min=0.0, b_max=1.0, clip=True),
        CropForegroundd(keys=dict_keys, source_key="vol"),
        Resized(keys=dict_keys, spatial_size=[256, 256, 155]),
        ToTensord(keys=dict_keys)
    ]
)

train_ds = CacheDataset(data=train_files, transform=train_transforms) #<------ Line where the traceback is
train_loader = DataLoader(train_ds, batch_size=1)

test_ds = CacheDataset(data=test_files, transform=test_transforms)
test_loader = DataLoader(test_ds, batch_size=1)

我想也许我正在加载一个字符串对象,但我认为这不是问题。

train_files 变量中的每一项都是一个字典,其中包含键“vol”或“seg”,值是各自的路径。也许转换有问题?

python machine-learning deep-learning pytorch pytorch-dataloader
1个回答
0
投票

问题出在cacheDataset上

© www.soinside.com 2019 - 2024. All rights reserved.