def test_convert_image_dtype(self): tensor, _ = self._create_data(26, 34, device=self.device) batch_tensors = torch.rand(4, 3, 44, 56, device=self.device) for in_dtype in int_dtypes() + float_dtypes(): in_tensor = tensor.to(in_dtype) in_batch_tensors = batch_tensors.to(in_dtype) for out_dtype in int_dtypes() + float_dtypes(): fn = T.ConvertImageDtype(dtype=out_dtype) scripted_fn = torch.jit.script(fn) if (in_dtype == torch.float32 and out_dtype in (torch.int32, torch.int64)) or \ (in_dtype == torch.float64 and out_dtype == torch.int64): with self.assertRaisesRegex(RuntimeError, r"cannot be performed safely"): self._test_transform_vs_scripted(fn, scripted_fn, in_tensor) with self.assertRaisesRegex(RuntimeError, r"cannot be performed safely"): self._test_transform_vs_scripted_on_batch(fn, scripted_fn, in_batch_tensors) continue self._test_transform_vs_scripted(fn, scripted_fn, in_tensor) self._test_transform_vs_scripted_on_batch(fn, scripted_fn, in_batch_tensors) with get_tmp_dir() as tmp_dir: scripted_fn.save(os.path.join(tmp_dir, "t_convert_dtype.pt"))
"num_output_channels": 1 }), (T.Grayscale, { "num_output_channels": 3 }), (T.RandomGrayscale, {})]) def test_to_grayscale(device, Klass, meth_kwargs): tol = 1.0 + 1e-10 _test_class_op(Klass, meth_kwargs=meth_kwargs, test_exact_match=False, device=device, tol=tol, agg_method="max") @pytest.mark.parametrize('device', cpu_and_gpu()) @pytest.mark.parametrize('in_dtype', int_dtypes() + float_dtypes()) @pytest.mark.parametrize('out_dtype', int_dtypes() + float_dtypes()) def test_convert_image_dtype(device, in_dtype, out_dtype): tensor, _ = _create_data(26, 34, device=device) batch_tensors = torch.rand(4, 3, 44, 56, device=device) in_tensor = tensor.to(in_dtype) in_batch_tensors = batch_tensors.to(in_dtype) fn = T.ConvertImageDtype(dtype=out_dtype) scripted_fn = torch.jit.script(fn) if (in_dtype == torch.float32 and out_dtype in (torch.int32, torch.int64)) or \ (in_dtype == torch.float64 and out_dtype == torch.int64): with pytest.raises(RuntimeError, match=r"cannot be performed safely"): _test_transform_vs_scripted(fn, scripted_fn, in_tensor)
s_transform = torch.jit.script(transform) s_transform.save(os.path.join(tmpdir, "t_perspective.pt")) @pytest.mark.parametrize("device", cpu_and_gpu()) @pytest.mark.parametrize( "Klass, meth_kwargs", [(T.Grayscale, {"num_output_channels": 1}), (T.Grayscale, {"num_output_channels": 3}), (T.RandomGrayscale, {})], ) def test_to_grayscale(device, Klass, meth_kwargs): tol = 1.0 + 1e-10 _test_class_op(Klass, meth_kwargs=meth_kwargs, test_exact_match=False, device=device, tol=tol, agg_method="max") @pytest.mark.parametrize("device", cpu_and_gpu()) @pytest.mark.parametrize("in_dtype", int_dtypes() + float_dtypes()) @pytest.mark.parametrize("out_dtype", int_dtypes() + float_dtypes()) def test_convert_image_dtype(device, in_dtype, out_dtype): tensor, _ = _create_data(26, 34, device=device) batch_tensors = torch.rand(4, 3, 44, 56, device=device) in_tensor = tensor.to(in_dtype) in_batch_tensors = batch_tensors.to(in_dtype) fn = T.ConvertImageDtype(dtype=out_dtype) scripted_fn = torch.jit.script(fn) if (in_dtype == torch.float32 and out_dtype in (torch.int32, torch.int64)) or ( in_dtype == torch.float64 and out_dtype == torch.int64 ): with pytest.raises(RuntimeError, match=r"cannot be performed safely"):