| @@ -14,6 +14,7 @@ | |||||
| * limitations under the License. | * limitations under the License. | ||||
| */ | */ | ||||
| #include <algorithm> | #include <algorithm> | ||||
| #include <cmath> | |||||
| #include <random> | #include <random> | ||||
| #include <utility> | #include <utility> | ||||
| #include <vector> | #include <vector> | ||||
| @@ -72,7 +73,7 @@ Status RandomAffineOp::Compute(const std::shared_ptr<Tensor> &input, std::shared | |||||
| float_t shear_y = 0.0; | float_t shear_y = 0.0; | ||||
| RETURN_IF_NOT_OK(GenerateRealNumber(shear_ranges_[2], shear_ranges_[3], &rnd_, &shear_y)); | RETURN_IF_NOT_OK(GenerateRealNumber(shear_ranges_[2], shear_ranges_[3], &rnd_, &shear_y)); | ||||
| // assign to base class variables | // assign to base class variables | ||||
| degrees_ = degrees; | |||||
| degrees_ = fmod(degrees, 360.0); | |||||
| scale_ = scale; | scale_ = scale; | ||||
| translation_[0] = translation_x; | translation_[0] = translation_x; | ||||
| translation_[1] = translation_y; | translation_[1] = translation_y; | ||||
| @@ -44,6 +44,7 @@ valid_detype = [ | |||||
| "uint32", "uint64", "float16", "float32", "float64", "string" | "uint32", "uint64", "float16", "float32", "float64", "string" | ||||
| ] | ] | ||||
| def is_iterable(obj): | def is_iterable(obj): | ||||
| """ | """ | ||||
| Helper function to check if object is iterable. | Helper function to check if object is iterable. | ||||
| @@ -60,6 +61,7 @@ def is_iterable(obj): | |||||
| return False | return False | ||||
| return True | return True | ||||
| def pad_arg_name(arg_name): | def pad_arg_name(arg_name): | ||||
| if arg_name != "": | if arg_name != "": | ||||
| arg_name = arg_name + " " | arg_name = arg_name + " " | ||||
| @@ -70,8 +72,8 @@ def check_value(value, valid_range, arg_name=""): | |||||
| arg_name = pad_arg_name(arg_name) | arg_name = pad_arg_name(arg_name) | ||||
| if value < valid_range[0] or value > valid_range[1]: | if value < valid_range[0] or value > valid_range[1]: | ||||
| raise ValueError( | raise ValueError( | ||||
| "Input {0}is not within the required interval of ({1} to {2}).".format(arg_name, valid_range[0], | |||||
| valid_range[1])) | |||||
| "Input {0}is not within the required interval of [{1}, {2}].".format(arg_name, valid_range[0], | |||||
| valid_range[1])) | |||||
| def check_value_cutoff(value, valid_range, arg_name=""): | def check_value_cutoff(value, valid_range, arg_name=""): | ||||
| @@ -86,16 +88,16 @@ def check_value_normalize_std(value, valid_range, arg_name=""): | |||||
| arg_name = pad_arg_name(arg_name) | arg_name = pad_arg_name(arg_name) | ||||
| if value <= valid_range[0] or value > valid_range[1]: | if value <= valid_range[0] or value > valid_range[1]: | ||||
| raise ValueError( | raise ValueError( | ||||
| "Input {0}is not within the required interval of ({1} to {2}).".format(arg_name, valid_range[0], | |||||
| valid_range[1])) | |||||
| "Input {0}is not within the required interval of ({1}, {2}].".format(arg_name, valid_range[0], | |||||
| valid_range[1])) | |||||
| def check_range(values, valid_range, arg_name=""): | def check_range(values, valid_range, arg_name=""): | ||||
| arg_name = pad_arg_name(arg_name) | arg_name = pad_arg_name(arg_name) | ||||
| if not valid_range[0] <= values[0] <= values[1] <= valid_range[1]: | if not valid_range[0] <= values[0] <= values[1] <= valid_range[1]: | ||||
| raise ValueError( | raise ValueError( | ||||
| "Input {0}is not within the required interval of ({1} to {2}).".format(arg_name, valid_range[0], | |||||
| valid_range[1])) | |||||
| "Input {0}is not within the required interval of [{1}, {2}].".format(arg_name, valid_range[0], | |||||
| valid_range[1])) | |||||
| def check_positive(value, arg_name=""): | def check_positive(value, arg_name=""): | ||||
| @@ -506,12 +506,12 @@ class Dataset: | |||||
| Dataset, dataset applied by the function. | Dataset, dataset applied by the function. | ||||
| Examples: | Examples: | ||||
| >>> # use NumpySliceDataset as an example | |||||
| >>> # use NumpySlicesDataset as an example | |||||
| >>> dataset = ds.NumpySlicesDataset([[0, 1], [2, 3]]) | >>> dataset = ds.NumpySlicesDataset([[0, 1], [2, 3]]) | ||||
| >>> | >>> | ||||
| >>> def flat_map_func(array): | >>> def flat_map_func(array): | ||||
| ... # create a NumpySliceDataset with the array | |||||
| ... dataset = ds.NumpySliceDataset(array) | |||||
| ... # create a NumpySlicesDataset with the array | |||||
| ... dataset = ds.NumpySlicesDataset(array) | |||||
| ... # repeat the dataset twice | ... # repeat the dataset twice | ||||
| ... dataset = dataset.repeat(2) | ... dataset = dataset.repeat(2) | ||||
| ... return dataset | ... return dataset | ||||
| @@ -3429,6 +3429,8 @@ class GeneratorDataset(MappableDataset): | |||||
| option could be beneficial if the Python operation is computational heavy (default=True). | option could be beneficial if the Python operation is computational heavy (default=True). | ||||
| Examples: | Examples: | ||||
| >>> import numpy as np | |||||
| >>> | |||||
| >>> # 1) Multidimensional generator function as callable input. | >>> # 1) Multidimensional generator function as callable input. | ||||
| >>> def generator_multidimensional(): | >>> def generator_multidimensional(): | ||||
| ... for i in range(64): | ... for i in range(64): | ||||
| @@ -24,18 +24,16 @@ and use Lookup to find the index of tokens in Vocab. | |||||
| class attributes (self.xxx) to support save() and load(). | class attributes (self.xxx) to support save() and load(). | ||||
| Examples: | Examples: | ||||
| >>> text_file_dataset_dir = "/path/to/text_file_dataset_file" | |||||
| >>> text_file_dataset_dir = ["/path/to/text_file_dataset_file"] # contains 1 or multiple text files | |||||
| >>> # Create a dataset for text sentences saved as line data in a file | >>> # Create a dataset for text sentences saved as line data in a file | ||||
| >>> text_file_dataset = ds.TextFileDataset(text_file_dataset_dir, shuffle=False) | |||||
| >>> text_file_dataset = ds.TextFileDataset(dataset_files=text_file_dataset_dir, shuffle=False) | |||||
| >>> # Tokenize sentences to unicode characters | >>> # Tokenize sentences to unicode characters | ||||
| >>> tokenizer = text.UnicodeCharTokenizer() | >>> tokenizer = text.UnicodeCharTokenizer() | ||||
| >>> # Load vocabulary from list | >>> # Load vocabulary from list | ||||
| >>> vocab = text.Vocab.from_list(['深', '圳', '欢', '迎', '您']) | |||||
| >>> vocab = text.Vocab.from_list(word_list=['深', '圳', '欢', '迎', '您']) | |||||
| >>> # Use Lookup operator to map tokens to ids | >>> # Use Lookup operator to map tokens to ids | ||||
| >>> lookup = text.Lookup(vocab) | |||||
| >>> lookup = text.Lookup(vocab=vocab) | |||||
| >>> text_file_dataset = text_file_dataset.map(operations=[tokenizer, lookup]) | >>> text_file_dataset = text_file_dataset.map(operations=[tokenizer, lookup]) | ||||
| >>> for i in text_file_dataset.create_dict_iterator(): | |||||
| ... print(i) | |||||
| >>> # if text line in dataset_file is: | >>> # if text line in dataset_file is: | ||||
| >>> # 深圳欢迎您 | >>> # 深圳欢迎您 | ||||
| >>> # then the output will be: | >>> # then the output will be: | ||||
| @@ -125,10 +125,12 @@ def check_degrees(degrees): | |||||
| """Check if the degrees is legal.""" | """Check if the degrees is legal.""" | ||||
| type_check(degrees, (numbers.Number, list, tuple), "degrees") | type_check(degrees, (numbers.Number, list, tuple), "degrees") | ||||
| if isinstance(degrees, numbers.Number): | if isinstance(degrees, numbers.Number): | ||||
| check_value(degrees, (0, float("inf")), "degrees") | |||||
| check_pos_float32(degrees, "degrees") | |||||
| elif isinstance(degrees, (list, tuple)): | elif isinstance(degrees, (list, tuple)): | ||||
| if len(degrees) == 2: | if len(degrees) == 2: | ||||
| type_check_list(degrees, (numbers.Number,), "degrees") | type_check_list(degrees, (numbers.Number,), "degrees") | ||||
| for value in degrees: | |||||
| check_float32(value, "degrees") | |||||
| if degrees[0] > degrees[1]: | if degrees[0] > degrees[1]: | ||||
| raise ValueError("degrees should be in (min,max) format. Got (max,min).") | raise ValueError("degrees should be in (min,max) format. Got (max,min).") | ||||
| else: | else: | ||||
| @@ -477,7 +477,7 @@ def test_batch_exception_15(): | |||||
| _ = data1.batch(batch_size=batch_size, input_columns=input_columns) | _ = data1.batch(batch_size=batch_size, input_columns=input_columns) | ||||
| except ValueError as e: | except ValueError as e: | ||||
| err_msg = str(e) | err_msg = str(e) | ||||
| assert "batch_size is not within the required interval of (1 to 2147483647)" in err_msg | |||||
| assert "batch_size is not within the required interval of [1, 2147483647]" in err_msg | |||||
| if __name__ == '__main__': | if __name__ == '__main__': | ||||
| @@ -243,7 +243,7 @@ def test_bounding_box_augment_invalid_ratio_c(): | |||||
| column_order=["image", "bbox"]) # Add column for "bbox" | column_order=["image", "bbox"]) # Add column for "bbox" | ||||
| except ValueError as error: | except ValueError as error: | ||||
| logger.info("Got an exception in DE: {}".format(str(error))) | logger.info("Got an exception in DE: {}".format(str(error))) | ||||
| assert "Input ratio is not within the required interval of (0.0 to 1.0)." in str(error) | |||||
| assert "Input ratio is not within the required interval of [0.0, 1.0]." in str(error) | |||||
| def test_bounding_box_augment_invalid_bounds_c(): | def test_bounding_box_augment_invalid_bounds_c(): | ||||
| @@ -181,7 +181,7 @@ def test_numpy_slices_distributed_shard_limit(): | |||||
| num = sys.maxsize | num = sys.maxsize | ||||
| with pytest.raises(ValueError) as err: | with pytest.raises(ValueError) as err: | ||||
| de.NumpySlicesDataset(np_data, num_shards=num, shard_id=0, shuffle=False) | de.NumpySlicesDataset(np_data, num_shards=num, shard_id=0, shuffle=False) | ||||
| assert "Input num_shards is not within the required interval of (1 to 2147483647)." in str(err.value) | |||||
| assert "Input num_shards is not within the required interval of [1, 2147483647]." in str(err.value) | |||||
| def test_numpy_slices_distributed_zero_shard(): | def test_numpy_slices_distributed_zero_shard(): | ||||
| @@ -190,7 +190,7 @@ def test_numpy_slices_distributed_zero_shard(): | |||||
| np_data = [1, 2, 3] | np_data = [1, 2, 3] | ||||
| with pytest.raises(ValueError) as err: | with pytest.raises(ValueError) as err: | ||||
| de.NumpySlicesDataset(np_data, num_shards=0, shard_id=0, shuffle=False) | de.NumpySlicesDataset(np_data, num_shards=0, shard_id=0, shuffle=False) | ||||
| assert "Input num_shards is not within the required interval of (1 to 2147483647)." in str(err.value) | |||||
| assert "Input num_shards is not within the required interval of [1, 2147483647]." in str(err.value) | |||||
| def test_numpy_slices_sequential_sampler(): | def test_numpy_slices_sequential_sampler(): | ||||
| @@ -201,7 +201,7 @@ def test_minddataset_invalidate_num_shards(): | |||||
| for _ in data_set.create_dict_iterator(num_epochs=1): | for _ in data_set.create_dict_iterator(num_epochs=1): | ||||
| num_iter += 1 | num_iter += 1 | ||||
| try: | try: | ||||
| assert 'Input shard_id is not within the required interval of (0 to 0).' in str(error_info.value) | |||||
| assert 'Input shard_id is not within the required interval of [0, 0].' in str(error_info.value) | |||||
| except Exception as error: | except Exception as error: | ||||
| os.remove(CV_FILE_NAME) | os.remove(CV_FILE_NAME) | ||||
| os.remove("{}.db".format(CV_FILE_NAME)) | os.remove("{}.db".format(CV_FILE_NAME)) | ||||
| @@ -221,7 +221,7 @@ def test_minddataset_invalidate_shard_id(): | |||||
| for _ in data_set.create_dict_iterator(num_epochs=1): | for _ in data_set.create_dict_iterator(num_epochs=1): | ||||
| num_iter += 1 | num_iter += 1 | ||||
| try: | try: | ||||
| assert 'Input shard_id is not within the required interval of (0 to 0).' in str(error_info.value) | |||||
| assert 'Input shard_id is not within the required interval of [0, 0].' in str(error_info.value) | |||||
| except Exception as error: | except Exception as error: | ||||
| os.remove(CV_FILE_NAME) | os.remove(CV_FILE_NAME) | ||||
| os.remove("{}.db".format(CV_FILE_NAME)) | os.remove("{}.db".format(CV_FILE_NAME)) | ||||
| @@ -241,7 +241,7 @@ def test_minddataset_shard_id_bigger_than_num_shard(): | |||||
| for _ in data_set.create_dict_iterator(num_epochs=1): | for _ in data_set.create_dict_iterator(num_epochs=1): | ||||
| num_iter += 1 | num_iter += 1 | ||||
| try: | try: | ||||
| assert 'Input shard_id is not within the required interval of (0 to 1).' in str(error_info.value) | |||||
| assert 'Input shard_id is not within the required interval of [0, 1].' in str(error_info.value) | |||||
| except Exception as error: | except Exception as error: | ||||
| os.remove(CV_FILE_NAME) | os.remove(CV_FILE_NAME) | ||||
| os.remove("{}.db".format(CV_FILE_NAME)) | os.remove("{}.db".format(CV_FILE_NAME)) | ||||
| @@ -253,7 +253,7 @@ def test_minddataset_shard_id_bigger_than_num_shard(): | |||||
| for _ in data_set.create_dict_iterator(num_epochs=1): | for _ in data_set.create_dict_iterator(num_epochs=1): | ||||
| num_iter += 1 | num_iter += 1 | ||||
| try: | try: | ||||
| assert 'Input shard_id is not within the required interval of (0 to 1).' in str(error_info.value) | |||||
| assert 'Input shard_id is not within the required interval of [0, 1].' in str(error_info.value) | |||||
| except Exception as error: | except Exception as error: | ||||
| os.remove(CV_FILE_NAME) | os.remove(CV_FILE_NAME) | ||||
| os.remove("{}.db".format(CV_FILE_NAME)) | os.remove("{}.db".format(CV_FILE_NAME)) | ||||
| @@ -277,6 +277,7 @@ def test_cv_minddataset_partition_num_samples_equals_0(): | |||||
| num_iter = 0 | num_iter = 0 | ||||
| for _ in data_set.create_dict_iterator(num_epochs=1): | for _ in data_set.create_dict_iterator(num_epochs=1): | ||||
| num_iter += 1 | num_iter += 1 | ||||
| with pytest.raises(ValueError) as error_info: | with pytest.raises(ValueError) as error_info: | ||||
| partitions(5) | partitions(5) | ||||
| try: | try: | ||||
| @@ -289,8 +290,10 @@ def test_cv_minddataset_partition_num_samples_equals_0(): | |||||
| os.remove(CV_FILE_NAME) | os.remove(CV_FILE_NAME) | ||||
| os.remove("{}.db".format(CV_FILE_NAME)) | os.remove("{}.db".format(CV_FILE_NAME)) | ||||
| def test_mindrecord_exception(): | def test_mindrecord_exception(): | ||||
| """tutorial for exception scenario of minderdataset + map would print error info.""" | """tutorial for exception scenario of minderdataset + map would print error info.""" | ||||
| def exception_func(item): | def exception_func(item): | ||||
| raise Exception("Error occur!") | raise Exception("Error occur!") | ||||
| @@ -33,7 +33,7 @@ def normalize_np(image, mean, std): | |||||
| """ | """ | ||||
| Apply the normalization | Apply the normalization | ||||
| """ | """ | ||||
| # DE decodes the image in RGB by deafult, hence | |||||
| # DE decodes the image in RGB by default, hence | |||||
| # the values here are in RGB | # the values here are in RGB | ||||
| image = np.array(image, np.float32) | image = np.array(image, np.float32) | ||||
| image = image - np.array(mean) | image = image - np.array(mean) | ||||
| @@ -300,7 +300,7 @@ def test_normalize_exception_invalid_range_py(): | |||||
| _ = py_vision.Normalize([0.75, 1.25, 0.5], [0.1, 0.18, 1.32]) | _ = py_vision.Normalize([0.75, 1.25, 0.5], [0.1, 0.18, 1.32]) | ||||
| except ValueError as e: | except ValueError as e: | ||||
| logger.info("Got an exception in DE: {}".format(str(e))) | logger.info("Got an exception in DE: {}".format(str(e))) | ||||
| assert "Input mean_value is not within the required interval of (0.0 to 1.0)." in str(e) | |||||
| assert "Input mean_value is not within the required interval of [0.0, 1.0]." in str(e) | |||||
| def test_normalize_grayscale_md5_01(): | def test_normalize_grayscale_md5_01(): | ||||
| @@ -33,7 +33,7 @@ def normalizepad_np(image, mean, std): | |||||
| """ | """ | ||||
| Apply the normalize+pad | Apply the normalize+pad | ||||
| """ | """ | ||||
| # DE decodes the image in RGB by deafult, hence | |||||
| # DE decodes the image in RGB by default, hence | |||||
| # the values here are in RGB | # the values here are in RGB | ||||
| image = np.array(image, np.float32) | image = np.array(image, np.float32) | ||||
| image = image - np.array(mean) | image = image - np.array(mean) | ||||
| @@ -198,4 +198,4 @@ def test_normalizepad_exception_invalid_range_py(): | |||||
| _ = py_vision.NormalizePad([0.75, 1.25, 0.5], [0.1, 0.18, 1.32]) | _ = py_vision.NormalizePad([0.75, 1.25, 0.5], [0.1, 0.18, 1.32]) | ||||
| except ValueError as e: | except ValueError as e: | ||||
| logger.info("Got an exception in DE: {}".format(str(e))) | logger.info("Got an exception in DE: {}".format(str(e))) | ||||
| assert "Input mean_value is not within the required interval of (0.0 to 1.0)." in str(e) | |||||
| assert "Input mean_value is not within the required interval of [0.0, 1.0]." in str(e) | |||||
| @@ -211,7 +211,7 @@ def test_random_affine_exception_negative_degrees(): | |||||
| _ = py_vision.RandomAffine(degrees=-15) | _ = py_vision.RandomAffine(degrees=-15) | ||||
| except ValueError as e: | except ValueError as e: | ||||
| logger.info("Got an exception in DE: {}".format(str(e))) | logger.info("Got an exception in DE: {}".format(str(e))) | ||||
| assert str(e) == "Input degrees is not within the required interval of (0 to inf)." | |||||
| assert str(e) == "Input degrees is not within the required interval of [0, 16777216]." | |||||
| def test_random_affine_exception_translation_range(): | def test_random_affine_exception_translation_range(): | ||||
| @@ -223,13 +223,13 @@ def test_random_affine_exception_translation_range(): | |||||
| _ = c_vision.RandomAffine(degrees=15, translate=(0.1, 1.5)) | _ = c_vision.RandomAffine(degrees=15, translate=(0.1, 1.5)) | ||||
| except ValueError as e: | except ValueError as e: | ||||
| logger.info("Got an exception in DE: {}".format(str(e))) | logger.info("Got an exception in DE: {}".format(str(e))) | ||||
| assert str(e) == "Input translate at 1 is not within the required interval of (-1.0 to 1.0)." | |||||
| assert str(e) == "Input translate at 1 is not within the required interval of [-1.0, 1.0]." | |||||
| logger.info("test_random_affine_exception_translation_range") | logger.info("test_random_affine_exception_translation_range") | ||||
| try: | try: | ||||
| _ = c_vision.RandomAffine(degrees=15, translate=(-2, 1.5)) | _ = c_vision.RandomAffine(degrees=15, translate=(-2, 1.5)) | ||||
| except ValueError as e: | except ValueError as e: | ||||
| logger.info("Got an exception in DE: {}".format(str(e))) | logger.info("Got an exception in DE: {}".format(str(e))) | ||||
| assert str(e) == "Input translate at 0 is not within the required interval of (-1.0 to 1.0)." | |||||
| assert str(e) == "Input translate at 0 is not within the required interval of [-1.0, 1.0]." | |||||
| def test_random_affine_exception_scale_value(): | def test_random_affine_exception_scale_value(): | ||||
| @@ -260,7 +260,7 @@ def test_random_crop_with_bbox_op_bad_padding(): | |||||
| break | break | ||||
| except ValueError as err: | except ValueError as err: | ||||
| logger.info("Got an exception in DE: {}".format(str(err))) | logger.info("Got an exception in DE: {}".format(str(err))) | ||||
| assert "Input padding is not within the required interval of (0 to 2147483647)." in str(err) | |||||
| assert "Input padding is not within the required interval of [0, 2147483647]." in str(err) | |||||
| try: | try: | ||||
| test_op = c_vision.RandomCropWithBBox([512, 512], padding=[16777216, 16777216, 16777216, 16777216]) | test_op = c_vision.RandomCropWithBBox([512, 512], padding=[16777216, 16777216, 16777216, 16777216]) | ||||
| @@ -188,7 +188,7 @@ def test_random_grayscale_invalid_param(): | |||||
| data = data.map(operations=transform, input_columns=["image"]) | data = data.map(operations=transform, input_columns=["image"]) | ||||
| except ValueError as e: | except ValueError as e: | ||||
| logger.info("Got an exception in DE: {}".format(str(e))) | logger.info("Got an exception in DE: {}".format(str(e))) | ||||
| assert "Input prob is not within the required interval of (0.0 to 1.0)." in str(e) | |||||
| assert "Input prob is not within the required interval of [0.0, 1.0]." in str(e) | |||||
| if __name__ == "__main__": | if __name__ == "__main__": | ||||
| @@ -143,7 +143,7 @@ def test_random_horizontal_invalid_prob_c(): | |||||
| data = data.map(operations=random_horizontal_op, input_columns=["image"]) | data = data.map(operations=random_horizontal_op, input_columns=["image"]) | ||||
| except ValueError as e: | except ValueError as e: | ||||
| logger.info("Got an exception in DE: {}".format(str(e))) | logger.info("Got an exception in DE: {}".format(str(e))) | ||||
| assert "Input prob is not within the required interval of (0.0 to 1.0)." in str(e) | |||||
| assert "Input prob is not within the required interval of [0.0, 1.0]." in str(e) | |||||
| def test_random_horizontal_invalid_prob_py(): | def test_random_horizontal_invalid_prob_py(): | ||||
| @@ -166,7 +166,7 @@ def test_random_horizontal_invalid_prob_py(): | |||||
| data = data.map(operations=transform, input_columns=["image"]) | data = data.map(operations=transform, input_columns=["image"]) | ||||
| except ValueError as e: | except ValueError as e: | ||||
| logger.info("Got an exception in DE: {}".format(str(e))) | logger.info("Got an exception in DE: {}".format(str(e))) | ||||
| assert "Input prob is not within the required interval of (0.0 to 1.0)." in str(e) | |||||
| assert "Input prob is not within the required interval of [0.0, 1.0]." in str(e) | |||||
| def test_random_horizontal_comp(plot=False): | def test_random_horizontal_comp(plot=False): | ||||
| @@ -185,7 +185,7 @@ def test_random_horizontal_flip_with_bbox_invalid_prob_c(): | |||||
| column_order=["image", "bbox"]) # Add column for "bbox" | column_order=["image", "bbox"]) # Add column for "bbox" | ||||
| except ValueError as error: | except ValueError as error: | ||||
| logger.info("Got an exception in DE: {}".format(str(error))) | logger.info("Got an exception in DE: {}".format(str(error))) | ||||
| assert "Input prob is not within the required interval of (0.0 to 1.0)." in str(error) | |||||
| assert "Input prob is not within the required interval of [0.0, 1.0]." in str(error) | |||||
| def test_random_horizontal_flip_with_bbox_invalid_bounds_c(): | def test_random_horizontal_flip_with_bbox_invalid_bounds_c(): | ||||
| @@ -24,7 +24,6 @@ from mindspore import log as logger | |||||
| from util import visualize_list, save_and_check_md5, \ | from util import visualize_list, save_and_check_md5, \ | ||||
| config_get_set_seed, config_get_set_num_parallel_workers | config_get_set_seed, config_get_set_num_parallel_workers | ||||
| GENERATE_GOLDEN = False | GENERATE_GOLDEN = False | ||||
| DATA_DIR = ["../data/dataset/test_tf_file_3_images/train-0000-of-0001.data"] | DATA_DIR = ["../data/dataset/test_tf_file_3_images/train-0000-of-0001.data"] | ||||
| @@ -82,7 +81,7 @@ def skip_test_random_perspective_md5(): | |||||
| py_vision.Decode(), | py_vision.Decode(), | ||||
| py_vision.RandomPerspective(distortion_scale=0.3, prob=0.7, | py_vision.RandomPerspective(distortion_scale=0.3, prob=0.7, | ||||
| interpolation=Inter.BILINEAR), | interpolation=Inter.BILINEAR), | ||||
| py_vision.Resize(1450), # resize to a smaller size to prevent round-off error | |||||
| py_vision.Resize(1450), # resize to a smaller size to prevent round-off error | |||||
| py_vision.ToTensor() | py_vision.ToTensor() | ||||
| ] | ] | ||||
| transform = mindspore.dataset.transforms.py_transforms.Compose(transforms) | transform = mindspore.dataset.transforms.py_transforms.Compose(transforms) | ||||
| @@ -109,7 +108,7 @@ def test_random_perspective_exception_distortion_scale_range(): | |||||
| _ = py_vision.RandomPerspective(distortion_scale=1.5) | _ = py_vision.RandomPerspective(distortion_scale=1.5) | ||||
| except ValueError as e: | except ValueError as e: | ||||
| logger.info("Got an exception in DE: {}".format(str(e))) | logger.info("Got an exception in DE: {}".format(str(e))) | ||||
| assert str(e) == "Input distortion_scale is not within the required interval of (0.0 to 1.0)." | |||||
| assert str(e) == "Input distortion_scale is not within the required interval of [0.0, 1.0]." | |||||
| def test_random_perspective_exception_prob_range(): | def test_random_perspective_exception_prob_range(): | ||||
| @@ -121,7 +120,7 @@ def test_random_perspective_exception_prob_range(): | |||||
| _ = py_vision.RandomPerspective(prob=1.2) | _ = py_vision.RandomPerspective(prob=1.2) | ||||
| except ValueError as e: | except ValueError as e: | ||||
| logger.info("Got an exception in DE: {}".format(str(e))) | logger.info("Got an exception in DE: {}".format(str(e))) | ||||
| assert str(e) == "Input prob is not within the required interval of (0.0 to 1.0)." | |||||
| assert str(e) == "Input prob is not within the required interval of [0.0, 1.0]." | |||||
| if __name__ == "__main__": | if __name__ == "__main__": | ||||
| @@ -168,19 +168,19 @@ def test_random_posterize_exception_bit(): | |||||
| _ = c_vision.RandomPosterize((1, 9)) | _ = c_vision.RandomPosterize((1, 9)) | ||||
| except ValueError as e: | except ValueError as e: | ||||
| logger.info("Got an exception in DE: {}".format(str(e))) | logger.info("Got an exception in DE: {}".format(str(e))) | ||||
| assert str(e) == "Input is not within the required interval of (1 to 8)." | |||||
| assert str(e) == "Input is not within the required interval of [1, 8]." | |||||
| # Test min < 1 | # Test min < 1 | ||||
| try: | try: | ||||
| _ = c_vision.RandomPosterize((0, 7)) | _ = c_vision.RandomPosterize((0, 7)) | ||||
| except ValueError as e: | except ValueError as e: | ||||
| logger.info("Got an exception in DE: {}".format(str(e))) | logger.info("Got an exception in DE: {}".format(str(e))) | ||||
| assert str(e) == "Input is not within the required interval of (1 to 8)." | |||||
| assert str(e) == "Input is not within the required interval of [1, 8]." | |||||
| # Test max < min | # Test max < min | ||||
| try: | try: | ||||
| _ = c_vision.RandomPosterize((8, 1)) | _ = c_vision.RandomPosterize((8, 1)) | ||||
| except ValueError as e: | except ValueError as e: | ||||
| logger.info("Got an exception in DE: {}".format(str(e))) | logger.info("Got an exception in DE: {}".format(str(e))) | ||||
| assert str(e) == "Input is not within the required interval of (1 to 8)." | |||||
| assert str(e) == "Input is not within the required interval of [1, 8]." | |||||
| # Test wrong type (not uint8) | # Test wrong type (not uint8) | ||||
| try: | try: | ||||
| _ = c_vision.RandomPosterize(1.1) | _ = c_vision.RandomPosterize(1.1) | ||||
| @@ -160,7 +160,7 @@ def test_random_resize_with_bbox_op_invalid_c(): | |||||
| except ValueError as err: | except ValueError as err: | ||||
| logger.info("Got an exception in DE: {}".format(str(err))) | logger.info("Got an exception in DE: {}".format(str(err))) | ||||
| assert "Input is not within the required interval of (1 to 16777216)." in str(err) | |||||
| assert "Input is not within the required interval of [1, 16777216]." in str(err) | |||||
| try: | try: | ||||
| # one of the size values is zero | # one of the size values is zero | ||||
| @@ -168,7 +168,7 @@ def test_random_resize_with_bbox_op_invalid_c(): | |||||
| except ValueError as err: | except ValueError as err: | ||||
| logger.info("Got an exception in DE: {}".format(str(err))) | logger.info("Got an exception in DE: {}".format(str(err))) | ||||
| assert "Input size at dim 0 is not within the required interval of (1 to 2147483647)." in str(err) | |||||
| assert "Input size at dim 0 is not within the required interval of [1, 2147483647]." in str(err) | |||||
| try: | try: | ||||
| # negative value for resize | # negative value for resize | ||||
| @@ -176,7 +176,7 @@ def test_random_resize_with_bbox_op_invalid_c(): | |||||
| except ValueError as err: | except ValueError as err: | ||||
| logger.info("Got an exception in DE: {}".format(str(err))) | logger.info("Got an exception in DE: {}".format(str(err))) | ||||
| assert "Input is not within the required interval of (1 to 16777216)." in str(err) | |||||
| assert "Input is not within the required interval of [1, 16777216]." in str(err) | |||||
| try: | try: | ||||
| # invalid input shape | # invalid input shape | ||||
| @@ -42,8 +42,8 @@ def test_random_select_subpolicy(): | |||||
| assert "policy can not be empty." in test_config([[1, 2, 3]], []) | assert "policy can not be empty." in test_config([[1, 2, 3]], []) | ||||
| assert "policy[0] can not be empty." in test_config([[1, 2, 3]], [[]]) | assert "policy[0] can not be empty." in test_config([[1, 2, 3]], [[]]) | ||||
| assert "op of (op, prob) in policy[1][0] is neither a c_transform op (TensorOperation) nor a callable pyfunc" \ | assert "op of (op, prob) in policy[1][0] is neither a c_transform op (TensorOperation) nor a callable pyfunc" \ | ||||
| in test_config([[1, 2, 3]], [[(ops.PadEnd([4], 0), 0.5)], [(1, 0.4)]]) | |||||
| assert "prob of (op, prob) policy[1][0] is not within the required interval of (0 to 1)" in test_config([[1]], [ | |||||
| in test_config([[1, 2, 3]], [[(ops.PadEnd([4], 0), 0.5)], [(1, 0.4)]]) | |||||
| assert "prob of (op, prob) policy[1][0] is not within the required interval of [0, 1]" in test_config([[1]], [ | |||||
| [(ops.Duplicate(), 0)], [(ops.Duplicate(), -0.1)]]) | [(ops.Duplicate(), 0)], [(ops.Duplicate(), -0.1)]]) | ||||
| @@ -110,7 +110,7 @@ def test_random_solarize_errors(): | |||||
| with pytest.raises(ValueError) as error_info: | with pytest.raises(ValueError) as error_info: | ||||
| vision.RandomSolarize((12, 1000)) | vision.RandomSolarize((12, 1000)) | ||||
| assert "Input is not within the required interval of (0 to 255)." in str(error_info.value) | |||||
| assert "Input is not within the required interval of [0, 255]." in str(error_info.value) | |||||
| with pytest.raises(TypeError) as error_info: | with pytest.raises(TypeError) as error_info: | ||||
| vision.RandomSolarize((122.1, 140)) | vision.RandomSolarize((122.1, 140)) | ||||
| @@ -143,7 +143,7 @@ def test_random_vertical_invalid_prob_c(): | |||||
| data = data.map(operations=random_horizontal_op, input_columns=["image"]) | data = data.map(operations=random_horizontal_op, input_columns=["image"]) | ||||
| except ValueError as e: | except ValueError as e: | ||||
| logger.info("Got an exception in DE: {}".format(str(e))) | logger.info("Got an exception in DE: {}".format(str(e))) | ||||
| assert 'Input prob is not within the required interval of (0.0 to 1.0).' in str(e) | |||||
| assert 'Input prob is not within the required interval of [0.0, 1.0].' in str(e) | |||||
| def test_random_vertical_invalid_prob_py(): | def test_random_vertical_invalid_prob_py(): | ||||
| @@ -165,7 +165,7 @@ def test_random_vertical_invalid_prob_py(): | |||||
| data = data.map(operations=transform, input_columns=["image"]) | data = data.map(operations=transform, input_columns=["image"]) | ||||
| except ValueError as e: | except ValueError as e: | ||||
| logger.info("Got an exception in DE: {}".format(str(e))) | logger.info("Got an exception in DE: {}".format(str(e))) | ||||
| assert 'Input prob is not within the required interval of (0.0 to 1.0).' in str(e) | |||||
| assert 'Input prob is not within the required interval of [0.0, 1.0].' in str(e) | |||||
| def test_random_vertical_comp(plot=False): | def test_random_vertical_comp(plot=False): | ||||
| @@ -187,7 +187,7 @@ def test_random_vertical_flip_with_bbox_op_invalid_c(): | |||||
| except ValueError as err: | except ValueError as err: | ||||
| logger.info("Got an exception in DE: {}".format(str(err))) | logger.info("Got an exception in DE: {}".format(str(err))) | ||||
| assert "Input prob is not within the required interval of (0.0 to 1.0)." in str(err) | |||||
| assert "Input prob is not within the required interval of [0.0, 1.0]." in str(err) | |||||
| def test_random_vertical_flip_with_bbox_op_bad_c(): | def test_random_vertical_flip_with_bbox_op_bad_c(): | ||||
| @@ -149,7 +149,7 @@ def test_shuffle_exception_01(): | |||||
| except Exception as e: | except Exception as e: | ||||
| logger.info("Got an exception in DE: {}".format(str(e))) | logger.info("Got an exception in DE: {}".format(str(e))) | ||||
| assert "Input buffer_size is not within the required interval of (2 to 2147483647)" in str(e) | |||||
| assert "Input buffer_size is not within the required interval of [2, 2147483647]" in str(e) | |||||
| def test_shuffle_exception_02(): | def test_shuffle_exception_02(): | ||||
| @@ -167,7 +167,7 @@ def test_shuffle_exception_02(): | |||||
| except Exception as e: | except Exception as e: | ||||
| logger.info("Got an exception in DE: {}".format(str(e))) | logger.info("Got an exception in DE: {}".format(str(e))) | ||||
| assert "Input buffer_size is not within the required interval of (2 to 2147483647)" in str(e) | |||||
| assert "Input buffer_size is not within the required interval of [2, 2147483647]" in str(e) | |||||
| def test_shuffle_exception_03(): | def test_shuffle_exception_03(): | ||||
| @@ -185,7 +185,7 @@ def test_shuffle_exception_03(): | |||||
| except Exception as e: | except Exception as e: | ||||
| logger.info("Got an exception in DE: {}".format(str(e))) | logger.info("Got an exception in DE: {}".format(str(e))) | ||||
| assert "Input buffer_size is not within the required interval of (2 to 2147483647)" in str(e) | |||||
| assert "Input buffer_size is not within the required interval of [2, 2147483647]" in str(e) | |||||
| def test_shuffle_exception_05(): | def test_shuffle_exception_05(): | ||||
| @@ -146,7 +146,7 @@ def test_ten_crop_invalid_size_error_msg(): | |||||
| vision.TenCrop(0), | vision.TenCrop(0), | ||||
| lambda images: np.stack([vision.ToTensor()(image) for image in images]) # 4D stack of 10 images | lambda images: np.stack([vision.ToTensor()(image) for image in images]) # 4D stack of 10 images | ||||
| ] | ] | ||||
| error_msg = "Input is not within the required interval of (1 to 16777216)." | |||||
| error_msg = "Input is not within the required interval of [1, 16777216]." | |||||
| assert error_msg == str(info.value) | assert error_msg == str(info.value) | ||||
| with pytest.raises(ValueError) as info: | with pytest.raises(ValueError) as info: | ||||