Azure / Azure/azureml-examples
Tutorial notebook image-object-detection throws up unhashable dict error
- Dominant language
- Jupyter Notebook
- Stars
- 2k
- Forks
- 1.7k
- Avg merge
- 18h 18m
- Merged PRs (30d)
- 2
Description
## On running `automl_image_run = experiment.submit(image_config_yolov5)` the following error pops up -
```
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
C:\ProgramData\Miniconda3\envs\azure_automl\lib\site-packages\azureml\automl\runtime\_ml_engine\validation\validators.py in validate(self, data)
107 try:
--> 108 self.validate_tabular_data(tabular_data)
109 except (DataException, ValidationException):
C:\ProgramData\Miniconda3\envs\azure_automl\lib\site-packages\azureml\automl\runtime\_ml_engine\validation\materialized_tabular_data_validator.py in validate_tabular_data(self, tabular_data)
79 if not self._is_featurization_enabled:
---> 80 self._check_if_featurization_can_be_skipped(tabular_data)
81 else:
C:\ProgramData\Miniconda3\envs\azure_automl\lib\site-packages\azureml\automl\runtime\_ml_engine\validation\materialized_tabular_data_validator.py in _check_if_featurization_can_be_skipped(self, tabular_data)
209
--> 210 if MaterializedTabularDataValidator._is_numeric_x_part_of_drop_set(X[column]):
211 numeric_column_drop_set_counter += 1
C:\ProgramData\Miniconda3\envs\azure_automl\lib\site-packages\azureml\automl\runtime\_ml_engine\validation\materialized_tabular_data_validator.py in _is_numeric_x_part_of_drop_set(x)
226 non_na_raw_column = x.dropna()
--> 227 return not non_na_raw_column.shape[0] or non_na_raw_column.unique().shape[0] == 1
228
C:\ProgramData\Miniconda3\envs\azure_automl\lib\site-packages\pandas\core\series.py in unique(self)
1990 """
-> 1991 result = super().unique()
1992 return result
C:\ProgramData\Miniconda3\envs\azure_automl\lib\site-packages\pandas\core\base.py in unique(self)
1404
-> 1405 result = unique1d(values)
1406
C:\ProgramData\Miniconda3\envs\azure_automl\lib\site-packages\pandas\core\algorithms.py in unique(values)
404 table = htable(len(values))
--> 405 uniques = table.unique(values)
406 uniques = _reconstruct_data(uniques, dtype, original)
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.unique()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable._unique()
TypeError: unhashable type: 'dict'
During handling of the above exception, another exception occurred:
ValidationException Traceback (most recent call last)
in
----> 1 automl_image_run = experiment.submit(image_config_yolov5)
C:\ProgramData\Miniconda3\envs\azure_automl\lib\site-packages\azureml\core\experiment.py in submit(self, config, tags, **kwargs)
218 submit_func = get_experiment_submit(config)
219 with self._log_context("submit config {}".format(config.__class__.__name__)):
--> 220 run = submit_func(config, self.workspace, self.name, **kwargs)
221 if tags is not None:
222 run.set_tags(tags)
C:\ProgramData\Miniconda3\envs\azure_automl\lib\site-packages\azureml\train\automl\automlconfig.py in _automl_static_submit(automl_config_object, workspace, experiment_name, **kwargs)
100 compute_target,
101 parent_run_id,
--> 102 show_output)
103
104 automl_run.add_properties(global_tracking_info_registry.gather_all(settings.path))
C:\ProgramData\Miniconda3\envs\azure_automl\lib\site-packages\azureml\train\automl\automlconfig.py in _start_execution(experiment, settings_obj, fit_params, run_config, compute_target, parent_run_id, show_output)
204 ignored_dependencies=package_utilities._PACKAGES_TO_IGNORE_VERSIONS
205 )
--> 206 automl_run = _default_execution(experiment, settings_obj, fit_params, True, show_output, parent_run_id)
207 elif is_managed:
208 logger.info("Submitting local managed run.")
C:\ProgramData\Miniconda3\envs\azure_automl\lib\site-packages\azureml\train\automl\automlconfig.py in _default_execution(experiment, settings_obj, fit_params, legacy_local, show_output, parent_run_id)
124 experiment_state.console_writer.show_output = show_output
125 driver = ExperimentDriver(experiment_state)
--> 126 updated_params = driver.create_parent_run(**fit_params)
127 start_params = _combine_start_params(updated_params, **fit_params)
128 return driver.start(**start_params)
C:\ProgramData\Miniconda3\envs\azure_automl\lib\site-packages\azureml\train\automl\_experiment_drivers\experiment_driver.py in create_parent_run(self, run_configuration, compute_target, X, y, sample_weight, X_valid, y_valid, sample_weight_valid, cv_splits_indices, existing_run, training_data, validation_data, test_data, _script_run, parent_run_id, kwargs)
219 _script_run,
220 parent_run_id,
--> 221 kwargs)
222 assert self.experiment_state.current_run
223 self.experiment_state.parent_run_id = self.experiment_state.current_run.id
C:\ProgramData\Miniconda3\envs\azure_automl\lib\site-packages\azureml\train\automl\runtime\_experiment_drivers\local_experiment_driver.py in create_parent_run(self, run_configuration, compute_target, X, y, sample_weight, X_valid, y_valid, sample_weight_valid, cv_splits_indices, existing_run, training_data, validation_data, test_data, _script_run, parent_run_id, kwargs)
169
170 self._validate_data(
--> 171 self.raw_experiment_data, self.experiment_state.automl_settings, parent_run_dto
172 )
173
C:\ProgramData\Miniconda3\envs\azure_automl\lib\site-packages\azureml\train\automl\runtime\_experiment_drivers\local_experiment_driver.py in _validate_data(self, raw_experiment_data, automl_settings, parent_run_dto)
1130 else:
1131 ml_engine.validate(raw_experiment_data, RawExperimentDataValidatorSettings(automl_settings),
-> 1132 ExperimentDataSettings(automl_settings))
C:\ProgramData\Miniconda3\envs\azure_automl\lib\site-packages\azureml\automl\runtime\_ml_engine\ml_engine.py in validate(raw_experiment_data, validation_settings, data_settings)
76 experiment_data_validator = RawExperimentDataValidator(validation_settings)
77
---> 78 experiment_data_validator.validate(raw_experiment_data)
79
80
C:\ProgramData\Miniconda3\envs\azure_automl\lib\site-packages\azureml\automl\runtime\_ml_engine\validation\validators.py in validate(self, data)
64
65 try:
---> 66 self.validate_raw_experiment_data(raw_experiment_data)
67 except (DataException, ValidationException):
68 raise
C:\ProgramData\Miniconda3\envs\azure_automl\lib\site-packages\azureml\automl\runtime\_ml_engine\validation\raw_experiment_data_validator.py in validate_raw_experiment_data(self, raw_experiment_data)
103
104 # The rest of validations on training dataset happen separately
--> 105 tabular_data_validator.validate(train_data)
106
107 if validation_data is not None:
C:\ProgramData\Miniconda3\envs\azure_automl\lib\site-packages\azureml\automl\runtime\_ml_engine\validation\validators.py in validate(self, data)
113 logging_utilities.log_traceback(e, logger)
114 new_exception = ValidationException.from_exception(e, target=self.__class__.__name__)
--> 115 raise new_exception.with_traceback(e.__traceback__)
116
117 @abstractmethod
C:\ProgramData\Miniconda3\envs\azure_automl\lib\site-packages\azureml\automl\runtime\_ml_engine\validation\validators.py in validate(self, data)
106
107 try:
--> 108 self.validate_tabular_data(tabular_data)
109 except (DataException, ValidationException):
110 # tabular data validations failed
C:\ProgramData\Miniconda3\envs\azure_automl\lib\site-packages\azureml\automl\runtime\_ml_engine\validation\materialized_tabular_data_validator.py in validate_tabular_data(self, tabular_data)
78
79 if not self._is_featurization_enabled:
---> 80 self._check_if_featurization_can_be_skipped(tabular_data)
81 else:
82 # Featurization is enabled, verify if the data is ok to pre-process.
C:\ProgramData\Miniconda3\envs\azure_automl\lib\site-packages\azureml\automl\runtime\_ml_engine\validation\materialized_tabular_data_validator.py in _check_if_featurization_can_be_skipped(self, tabular_data)
208 columns_requiring_featurization.append(str(column))
209
--> 210 if MaterializedTabularDataValidator._is_numeric_x_part_of_drop_set(X[column]):
211 numeric_column_drop_set_counter += 1
212
C:\ProgramData\Miniconda3\envs\azure_automl\lib\site-packages\azureml\automl\runtime\_ml_engine\validation\materialized_tabular_data_validator.py in _is_numeric_x_part_of_drop_set(x)
225 # If dataset contains all numerical with Ignore or AllNan, then we should alert the user.
226 non_na_raw_column = x.dropna()
--> 227 return not non_na_raw_column.shape[0] or non_na_raw_column.unique().shape[0] == 1
228
229 def _check_target_column(self, y: np.ndarray) -> None:
C:\ProgramData\Miniconda3\envs\azure_automl\lib\site-packages\pandas\core\series.py in unique(self)
1989 Categories (3, object): [a < b < c]
1990 """
-> 1991 result = super().unique()
1992 return result
1993
C:\ProgramData\Miniconda3\envs\azure_automl\lib\site-packages\pandas\core\base.py in unique(self)
1403 from pandas.core.algorithms import unique1d
1404
-> 1405 result = unique1d(values)
1406
1407 return result
C:\ProgramData\Miniconda3\envs\azure_automl\lib\site-packages\pandas\core\algorithms.py in unique(values)
403
404 table = htable(len(values))
--> 405 uniques = table.unique(values)
406 uniques = _reconstruct_data(uniques, dtype, original)
407 return uniques
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.unique()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable._unique()
ValidationException: ValidationException:
Message: unhashable type: 'dict'
InnerException: TypeError: unhashable type: 'dict'
ErrorResponse
{
"error": {
"code": "SystemError",
"message": "Encountered an internal AutoML error. Error Message/Code: ValidationException. Additional Info: ValidationException:\n\tMessage: unhashable type: 'dict'\n\tInnerException: None\n\tErrorResponse \n{\n \"error\": {\n \"message\": \"unhashable type: 'dict'\",\n \"target\": \"MaterializedTabularDataValidator\",\n \"reference_code\": \"MaterializedTabularDataValidator\"\n }\n}",
"details_uri": "https://aka.ms/automltroubleshoot",
"target": "MaterializedTabularDataValidator",
"inner_error": {
"code": "ClientError",
"inner_error": {
"code": "AutoMLInternal"
}
},
"reference_code": "MaterializedTabularDataValidator"
}
}
```
This is happening with all the datasets, I'm assuming it's not a pandas bug but actually how azureml handles the unique values in a pandas dataframe.
-
Contributor guide
Assessment
This issue has not been assessed yet.