

# Image Classification - TensorFlow Hyperparameters
<a name="IC-TF-Hyperparameter"></a>

Hyperparameters are parameters that are set before a machine learning model begins learning. The following hyperparameters are supported by the Amazon SageMaker AI built-in Image Classification - TensorFlow algorithm. See [Tune an Image Classification - TensorFlow model](IC-TF-tuning.md) for information on hyperparameter tuning. 


| Parameter Name | Description | 
| --- | --- | 
| augmentation | Set to `"True"` to apply `augmentation_random_flip`, `augmentation_random_rotation`, and `augmentation_random_zoom` to the training data. <br />Valid values: string, either: (`"True"` or `"False"`).<br />Default value: `"False"`. | 
| augmentation\_random\_flip | Indicates which flip mode to use for data augmentation when `augmentation` is set to `"True"`. For more information, see [RandomFlip](https://www.tensorflow.org/api_docs/python/tf/keras/layers/RandomFlip) in the TensorFlow documentation.<br />Valid values: string, any of the following: (`"horizontal_and_vertical"`, `"vertical"`, or `"None"`).<br />Default value: `"horizontal_and_vertical"`. | 
| augmentation\_random\_rotation | Indicates how much rotation to use for data augmentation when `augmentation` is set to `"True"`. Values represent a fraction of 2π. Positive values rotate counterclockwise while negative values rotate clockwise. `0` means no rotation. For more information, see [RandomRotation](https://www.tensorflow.org/api_docs/python/tf/keras/layers/RandomRotation) in the TensorFlow documentation.<br />Valid values: float, range: [`-1.0`, `1.0`].<br />Default value: `0.2`. | 
| augmentation\_random\_zoom | Indicates how much vertical zoom to use for data augmentation when `augmentation` is set to `"True"`. Positive values zoom out while negative values zoom in. `0` means no zoom. For more information, see [RandomZoom](https://www.tensorflow.org/api_docs/python/tf/keras/layers/RandomZoom) in the TensorFlow documentation.<br />Valid values: float, range: [`-1.0`, `1.0`].<br />Default value: `0.1`. | 
| batch\_size | The batch size for training. For training on instances with multiple GPUs, this batch size is used across the GPUs. <br />Valid values: positive integer.<br />Default value: `32`. | 
| beta\_1 | The beta1 for the `"adam"` optimizer. Represents the exponential decay rate for the first moment estimates. Ignored for other optimizers.<br />Valid values: float, range: [`0.0`, `1.0`].<br />Default value: `0.9`. | 
| beta\_2 | The beta2 for the `"adam"` optimizer. Represents the exponential decay rate for the second moment estimates. Ignored for other optimizers.<br />Valid values: float, range: [`0.0`, `1.0`].<br />Default value: `0.999`. | 
| binary\_mode | When `binary_mode` is set to `"True"`, the model returns a single probability number for the positive class and can use additional `eval_metric` options. Use only for binary classification problems.<br />Valid values: string, either: (`"True"` or `"False"`).<br />Default value: `"False"`. | 
| dropout\_rate | The dropout rate for the dropout layer in the top classification layer.<br />Valid values: float, range: [`0.0`, `1.0`].<br />Default value: `0.2` | 
| early\_stopping | Set to `"True"` to use early stopping logic during training. If `"False"`, early stopping is not used.<br />Valid values: string, either: (`"True"` or `"False"`).<br />Default value: `"False"`. | 
| early\_stopping\_min\_delta | The minimum change needed to qualify as an improvement. An absolute change less than the value of early\_stopping\_min\_delta does not qualify as improvement. Used only when early\_stopping is set to "True".Valid values: float, range: [`0.0`, `1.0`].<br />Default value: `0.0`. | 
| early\_stopping\_patience | The number of epochs to continue training with no improvement. Used only when `early_stopping` is set to `"True"`.<br />Valid values: positive integer.<br />Default value: `5`. | 
| epochs | The number of training epochs.<br />Valid values: positive integer.<br />Default value: `3`. | 
| epsilon | The epsilon for `"adam"`, `"rmsprop"`, `"adadelta"`, and `"adagrad"` optimizers. Usually set to a small value to avoid division by 0. Ignored for other optimizers.<br />Valid values: float, range: [`0.0`, `1.0`].<br />Default value: `1e-7`. | 
| eval\_metric | If `binary_mode` is set to `"False"`, `eval_metric` can only be `"accuracy"`. If `binary_mode` is `"True"`, select any of the valid values. For more information, see [Metrics](https://www.tensorflow.org/api_docs/python/tf/keras/metrics) in the TensorFlow documentation.<br />Valid values: string, any of the following: (`"accuracy"`, `"precision"`, `"recall"`, `"auc"`, or `"prc"`).<br />Default value: `"accuracy"`. | 
| image\_resize\_interpolation | Indicates interpolation method used when resizing images. For more information, see [image.resize](https://www.tensorflow.org/api_docs/python/tf/image/resize) in the TensorFlow documentation.<br />Valid values: string, any of the following: (`"bilinear"`, `"nearest"`, `"bicubic"`, `"area"`,` "lanczos3"` , `"lanczos5"`, `"gaussian"`, or `"mitchellcubic"`).<br />Default value: `"bilinear"`. | 
| initial\_accumulator\_value | The starting value for the accumulators, or the per-parameter momentum values, for the `"adagrad"` optimizer. Ignored for other optimizers.<br />Valid values: float, range: [`0.0`, `1.0`].<br />Default value: `0.0001`. | 
| label\_smoothing | Indicates how much to relax the confidence on label values. For example, if `label_smoothing` is `0.1`, then non-target labels are `0.1/num_classes `and target labels are `0.9+0.1/num_classes`. <br />Valid values: float, range: [`0.0`, `1.0`].<br />Default value: `0.1`. | 
| learning\_rate | The optimizer learning rate. Valid values: float, range: [`0.0`, `1.0`].<br />Default value: `0.001`. | 
| momentum | The momentum for `"sgd"`, `"nesterov"`, and `"rmsprop"` optimizers. Ignored for other optimizers.<br />Valid values: float, range: [`0.0`, `1.0`].<br />Default value: `0.9`. | 
| optimizer | The optimizer type. For more information, see [Optimizers](https://www.tensorflow.org/api_docs/python/tf/keras/optimizers) in the TensorFlow documentation.<br />Valid values: string, any of the following: (`"adam"`, `"sgd"`, `"nesterov"`, `"rmsprop"`,` "adagrad"` , `"adadelta"`).<br />Default value: `"adam"`. | 
| regularizers\_l2 | The L2 regularization factor for the dense layer in the classification layer. <br />Valid values: float, range: [`0.0`, `1.0`].<br />Default value: `.0001`. | 
| reinitialize\_top\_layer | If set to `"Auto"`, the top classification layer parameters are re-initialized during fine-tuning. For incremental training, top classification layer parameters are not re-initialized unless set to `"True"`.<br />Valid values: string, any of the following: (`"Auto"`, `"True"` or `"False"`).<br />Default value: `"Auto"`. | 
| rho | The discounting factor for the gradient of the `"adadelta"` and `"rmsprop"` optimizers. Ignored for other optimizers. <br />Valid values: float, range: [`0.0`, `1.0`].<br />Default value: `0.95`. | 
| train\_only\_top\_layer | If `"True"`, only the top classification layer parameters are fine-tuned. If `"False"`, all model parameters are fine-tuned.<br />Valid values: string, either: (`"True"` or `"False"`).<br />Default value: `"False"`. | 