diff --git a/mmengine/model/base_model/data_preprocessor.py b/mmengine/model/base_model/data_preprocessor.py index 7242fde94951f708e747b5e5795ca7f520358524..2640ce55c8454df233640b648b6725d5630ae907 100644 --- a/mmengine/model/base_model/data_preprocessor.py +++ b/mmengine/model/base_model/data_preprocessor.py @@ -53,7 +53,7 @@ class BaseDataPreprocessor(nn.Module): Tuple[List[torch.Tensor], Optional[list]]: Unstacked list of input tensor and list of labels at target device. """ - inputs = [_data['inputs'].to(self._device) for _data in data] + inputs = [_data['inputs'].to(self._device).float() for _data in data] batch_data_samples: List[BaseDataElement] = [] # Model can get predictions without any data samples. for _data in data: diff --git a/tests/test_model/test_base_model/test_data_preprocessor.py b/tests/test_model/test_base_model/test_data_preprocessor.py index b82b09fc17cfd7aef1699e51436e7656a5ce2038..6af6075210054c3ee2850c6c2b564be43834b992 100644 --- a/tests/test_model/test_base_model/test_data_preprocessor.py +++ b/tests/test_model/test_base_model/test_data_preprocessor.py @@ -28,6 +28,7 @@ class TestBaseDataPreprocessor(TestCase): ] batch_inputs, batch_labels = base_data_preprocessor(data) + self.assertTrue(torch.is_floating_point(batch_inputs)) self.assertEqual(batch_inputs.shape, (2, 1, 3, 5)) assert_allclose(input1, batch_inputs[0]) @@ -38,14 +39,17 @@ class TestBaseDataPreprocessor(TestCase): if torch.cuda.is_available(): base_data_preprocessor = base_data_preprocessor.cuda() batch_inputs, batch_labels = base_data_preprocessor(data) + self.assertTrue(torch.is_floating_point(batch_inputs)) self.assertEqual(batch_inputs.device.type, 'cuda') base_data_preprocessor = base_data_preprocessor.cpu() batch_inputs, batch_labels = base_data_preprocessor(data) + self.assertTrue(torch.is_floating_point(batch_inputs)) self.assertEqual(batch_inputs.device.type, 'cpu') base_data_preprocessor = base_data_preprocessor.to('cuda:0') batch_inputs, batch_labels = base_data_preprocessor(data) + self.assertTrue(torch.is_floating_point(batch_inputs)) self.assertEqual(batch_inputs.device.type, 'cuda') @@ -122,6 +126,7 @@ class TestImageDataPreprocessor(TestBaseDataPreprocessor): target_inputs = [target_inputs1, target_inputs2] inputs, data_samples = data_preprocessor(data, True) + self.assertTrue(torch.is_floating_point(inputs)) target_data_samples = [data_sample1, data_sample2] for input_, data_sample, target_input, target_data_sample in zip( @@ -142,6 +147,7 @@ class TestImageDataPreprocessor(TestBaseDataPreprocessor): target_inputs = [target_inputs1, target_inputs2] inputs, data_samples = data_preprocessor(data, True) + self.assertTrue(torch.is_floating_point(inputs)) target_data_samples = [data_sample1, data_sample2] for input_, data_sample, target_input, target_data_sample in zip(