Skip to content

pytorch numpy unification error #4774

@kwijk

Description

@kwijk

Describe the bug
The following code works in 0.9.0 but not in 0.9.1. It gives the following exception:

>           result = torch.quantile(x, q / 100.0, dim=dim, keepdim=keepdim)
E           RuntimeError: quantile() q tensor must be same dtype as the input tensor

../../../venv3/lib/python3.8/site-packages/monai/transforms/utils_pytorch_numpy_unification.py:111: RuntimeError

To Reproduce

class TestScaleIntensityRangePercentiles:

def test_1(self):
    import monai
    transform = monai.transforms.ScaleIntensityRangePercentiles(lower=0, upper=99, b_min=-1, b_max=1)

    import numpy as np
    x = np.ones(shape=(1, 30, 30, 30))
    y = transform(x)  # will give error

Expected behavior
The test code pasted above passes.

Additional context

A possible solution is to change the code to:

def percentile(
 ...
   q = torch.tensor(q, device=x.device, dtype=x.dtype)
   result = torch.quantile(x, q / 100.0, dim=dim, keepdim=keepdim)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions