tf.contrib.training.HParams
Class to hold a set of hyperparameters as name-value pairs.
tf.contrib.training.HParams( hparam_def=None, model_structure=None, **kwargs )
A HParams
object holds hyperparameters used to build and train a model, such as the number of hidden units in a neural net layer or the learning rate to use when training.
You first create a HParams
object by specifying the names and values of the hyperparameters.
To make them easily accessible the parameter names are added as direct attributes of the class. A typical usage is as follows:
# Create a HParams object specifying names and values of the model # hyperparameters: hparams = HParams(learning_rate=0.1, num_hidden_units=100) # The hyperparameter are available as attributes of the HParams object: hparams.learning_rate ==> 0.1 hparams.num_hidden_units ==> 100
Hyperparameters have type, which is inferred from the type of their value passed at construction type. The currently supported types are: integer, float, boolean, string, and list of integer, float, boolean, or string.
You can override hyperparameter values by calling the parse()
method, passing a string of comma separated name=value
pairs. This is intended to make it possible to override any hyperparameter values from a single command-line flag to which the user passes 'hyper-param=value' pairs. It avoids having to define one flag for each hyperparameter.
The syntax expected for each value depends on the type of the parameter. See parse()
for a description of the syntax.
Example:
# Define a command line flag to pass name=value pairs. # For example using argparse: import argparse parser = argparse.ArgumentParser(description='Train my model.') parser.add_argument('--hparams', type=str, help='Comma separated list of "name=value" pairs.') args = parser.parse_args() ... def my_program(): # Create a HParams object specifying the names and values of the # model hyperparameters: hparams = tf.contrib.training.HParams( learning_rate=0.1, num_hidden_units=100, activations=['relu', 'tanh']) # Override hyperparameters values by parsing the command line hparams.parse(args.hparams) # If the user passed `--hparams=learning_rate=0.3` on the command line # then 'hparams' has the following attributes: hparams.learning_rate ==> 0.3 hparams.num_hidden_units ==> 100 hparams.activations ==> ['relu', 'tanh'] # If the hyperparameters are in json format use parse_json: hparams.parse_json('{"learning_rate": 0.3, "activations": "relu"}')
Args | |
---|---|
hparam_def | Serialized hyperparameters, encoded as a hparam_pb2.HParamDef protocol buffer. If provided, this object is initialized by deserializing hparam_def. Otherwise **kwargs is used. |
model_structure | An instance of ModelStructure, defining the feature crosses to be used in the Trial. |
**kwargs | Key-value pairs where the key is the hyperparameter name and the value is the value for the parameter. |
Raises | |
---|---|
ValueError | If both hparam_def and initialization values are provided, or if one of the arguments is invalid. |
Methods
add_hparam
add_hparam( name, value )
Adds {name, value} pair to hyperparameters.
Args | |
---|---|
name | Name of the hyperparameter. |
value | Value of the hyperparameter. Can be one of the following types: int, float, string, int list, float list, or string list. |
Raises | |
---|---|
ValueError | if one of the arguments is invalid. |
del_hparam
del_hparam( name )
Removes the hyperparameter with key 'name'.
Does nothing if it isn't present.
Args | |
---|---|
name | Name of the hyperparameter. |
from_proto
@staticmethod from_proto( hparam_def, import_scope=None )
get
get( key, default=None )
Returns the value of key
if it exists, else default
.
get_model_structure
get_model_structure()
override_from_dict
override_from_dict( values_dict )
Override existing hyperparameter values, parsing new values from a dictionary.
Args | |
---|---|
values_dict | Dictionary of name:value pairs. |
Returns | |
---|---|
The HParams instance. |
Raises | |
---|---|
KeyError | If a hyperparameter in values_dict doesn't exist. |
ValueError | If values_dict cannot be parsed. |
parse
parse( values )
Override existing hyperparameter values, parsing new values from a string.
See parse_values for more detail on the allowed format for values.
Args | |
---|---|
values | String. Comma separated list of name=value pairs where 'value' must follow the syntax described above. |
Returns | |
---|---|
The HParams instance. |
Raises | |
---|---|
ValueError | If values cannot be parsed or a hyperparameter in values doesn't exist. |
parse_json
parse_json( values_json )
Override existing hyperparameter values, parsing new values from a json object.
Args | |
---|---|
values_json | String containing a json object of name:value pairs. |
Returns | |
---|---|
The HParams instance. |
Raises | |
---|---|
KeyError | If a hyperparameter in values_json doesn't exist. |
ValueError | If values_json cannot be parsed. |
set_from_map
set_from_map( values_map )
DEPRECATED. Use override_from_dict. (deprecated)
set_hparam
set_hparam( name, value )
Set the value of an existing hyperparameter.
This function verifies that the type of the value matches the type of the existing hyperparameter.
Args | |
---|---|
name | Name of the hyperparameter. |
value | New value of the hyperparameter. |
Raises | |
---|---|
KeyError | If the hyperparameter doesn't exist. |
ValueError | If there is a type mismatch. |
set_model_structure
set_model_structure( model_structure )
to_json
to_json( indent=None, separators=None, sort_keys=False )
Serializes the hyperparameters into JSON.
Args | |
---|---|
indent | If a non-negative integer, JSON array elements and object members will be pretty-printed with that indent level. An indent level of 0, or negative, will only insert newlines. None (the default) selects the most compact representation. |
separators | Optional (item_separator, key_separator) tuple. Default is (', ', ': ') . |
sort_keys | If True , the output dictionaries will be sorted by key. |
Returns | |
---|---|
A JSON string. |
to_proto
to_proto( export_scope=None )
Converts a HParams
object to a HParamDef
protocol buffer.
Args | |
---|---|
export_scope | Optional string . Name scope to remove. |
Returns | |
---|---|
A HParamDef protocol buffer. |
values
values()
Return the hyperparameter values as a Python dictionary.
Returns | |
---|---|
A dictionary with hyperparameter names as keys. The values are the hyperparameter values. |
__contains__
__contains__( key )
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/contrib/training/HParams