Define a search space
The set of hyperparameter values tried during hyperparameter tuning is known as the search space. The definition of the range of possible values that can be chosen depends on the type of hyperparameter.
Discrete hyperparameters
Some hyperparameters require discrete values - in other words, you must select the value from a particular finite set of possibilities. You can define a search space for a discrete parameter using a Choice from a list of explicit values, which you can define as a Python list (Choice(values=[10,20,30])
), a range (Choice(values=range(1,10))
), or an arbitrary set of comma-separated values (Choice(values=(30,50,100))
)
You can also select discrete values from any of the following discrete distributions:
QUniform(min_value, max_value, q)
: Returns a value like round(Uniform(min_value, max_value) / q) * qQLogUniform(min_value, max_value, q)
: Returns a value like round(exp(Uniform(min_value, max_value)) / q) * qQNormal(mu, sigma, q)
: Returns a value like round(Normal(mu, sigma) / q) * qQLogNormal(mu, sigma, q)
: Returns a value like round(exp(Normal(mu, sigma)) / q) * q
Continuous hyperparameters
Some hyperparameters are continuous - in other words you can use any value along a scale, resulting in an infinite number of possibilities. To define a search space for these kinds of value, you can use any of the following distribution types:
Uniform(min_value, max_value)
: Returns a value uniformly distributed between min_value and max_valueLogUniform(min_value, max_value)
: Returns a value drawn according to exp(Uniform(min_value, max_value)) so that the logarithm of the return value is uniformly distributedNormal(mu, sigma)
: Returns a real value that's normally distributed with mean mu and standard deviation sigmaLogNormal(mu, sigma)
: Returns a value drawn according to exp(Normal(mu, sigma)) so that the logarithm of the return value is normally distributed
Defining a search space
To define a search space for hyperparameter tuning, create a dictionary with the appropriate parameter expression for each named hyperparameter.
For example, the following search space indicates that the batch_size
hyperparameter can have the value 16, 32, or 64, and the learning_rate
hyperparameter can have any value from a normal distribution with a mean of 10 and a standard deviation of 3.
from azure.ai.ml.sweep import Choice, Normal
command_job_for_sweep = job(
batch_size=Choice(values=[16, 32, 64]),
learning_rate=Normal(mu=10, sigma=3),
)