Browse Source

check for param in choice if it is bool

If the values for batch_size is 'choice: [1, 2, True]', it will raise
validation exception.

Additionally, use 'type(value) is int' will not pass pylint. so use
'isinstance(x, bool) or not isinstance(x, int)' to filter invalid
value(s).
tags/v1.1.0
luopengting 4 years ago
parent
commit
16aa19579c
2 changed files with 8 additions and 1 deletions
  1. +2
    -1
      mindinsight/optimizer/common/validator/optimizer_config.py
  2. +6
    -0
      tests/ut/optimizer/common/validator/test_optimizer_config.py

+ 2
- 1
mindinsight/optimizer/common/validator/optimizer_config.py View File

@@ -219,7 +219,8 @@ class OptimizerConfig(Schema):
if list(filter(lambda x: not isinstance(x, float), choice)): if list(filter(lambda x: not isinstance(x, float), choice)):
err_msg = "The value(s) should be float number." err_msg = "The value(s) should be float number."
raise ValidationError(_generate_err_msg_for_nested_keys(err_msg, name, HyperParamKey.CHOICE.value)) raise ValidationError(_generate_err_msg_for_nested_keys(err_msg, name, HyperParamKey.CHOICE.value))
elif list(filter(lambda x: not isinstance(x, int), choice)):
elif list(filter(lambda x: isinstance(x, bool) or not isinstance(x, int), choice)):
# isinstance(x, int) will return True if x is bool. use 'type(x)' will not pass lint.
err_msg = "The value(s) should be integer." err_msg = "The value(s) should be integer."
raise ValidationError(_generate_err_msg_for_nested_keys(err_msg, name, HyperParamKey.CHOICE.value)) raise ValidationError(_generate_err_msg_for_nested_keys(err_msg, name, HyperParamKey.CHOICE.value))




+ 6
- 0
tests/ut/optimizer/common/validator/test_optimizer_config.py View File

@@ -231,6 +231,12 @@ class TestOptimizerConfig:
err = OptimizerConfig().validate(config_dict) err = OptimizerConfig().validate(config_dict)
assert expected_err == err assert expected_err == err


# test bool
expected_err['parameters'][param_name]['choice'] = 'The value(s) should be integer.'
config_dict['parameters'][param_name]['choice'] = [1, True]
err = OptimizerConfig().validate(config_dict)
assert expected_err == err

config_dict['parameters'][param_name] = {'choice': [0.1, 0.2]} config_dict['parameters'][param_name] = {'choice': [0.1, 0.2]}
err = OptimizerConfig().validate(config_dict) err = OptimizerConfig().validate(config_dict)
assert expected_err == err assert expected_err == err


Loading…
Cancel
Save