# Neural Network Regression module

*Creates a regression model using a neural network algorithm*

Category: Machine Learning / Initialize Model / Regression

## Module overview

This article describes a module in Azure Machine Learning designer.

Use this module to create a regression model using a customizable neural network algorithm.

Although neural networks are widely known for use in deep learning and modeling complex problems such as image recognition, they are easily adapted to regression problems. Any class of statistical models can be termed a neural network if they use adaptive weights and can approximate non-linear functions of their inputs. Thus neural network regression is suited to problems where a more traditional regression model cannot fit a solution.

Neural network regression is a supervised learning method, and therefore requires a *tagged dataset*, which includes a label column. Because a regression model predicts a numerical value, the label column must be a numerical data type.

You can train the model by providing the model and the tagged dataset as an input to Train Model. The trained model can then be used to predict values for the new input examples.

## Configure Neural Network Regression

Neural networks can be extensively customized. This section describes how to create a model using two methods:

Create a neural network model using the default architecture

If you accept the default neural network architecture, use the

**Properties**pane to set parameters that control the behavior of the neural network, such as the number of nodes in the hidden layer, learning rate, and normalization.Start here if you are new to neural networks. The module supports many customizations, as well as model tuning, without deep knowledge of neural networks.

Define a custom architecture for a neural network

Use this option if you want to add extra hidden layers, or fully customize the network architecture, its connections, and activation functions.

This option is best if you are already somewhat familiar with neural networks. You use the Net# language to define the network architecture.

## Create a neural network model using the default architecture

Add the

**Neural Network Regression**module to your pipeline in the designer. You can find this module under**Machine Learning**,**Initialize**, in the**Regression**category.Indicate how you want the model to be trained, by setting the

**Create trainer mode**option.**Single Parameter**: Choose this option if you already know how you want to configure the model.**Parameter Range**: Select this option if you are not sure of the best parameters, and want to run a parameter sweep. Select a range of values to iterate over, and the Tune Model Hyperparameters iterates over all possible combinations of the settings you provided to determine the hyperparameters that produce the optimal results.

In

**Hidden layer specification**, select**Fully connected case**. This option creates a model using the default neural network architecture, which for a neural network regression model, has these attributes:- The network has exactly one hidden layer.
- The output layer is fully connected to the hidden layer and the hidden layer is fully connected to the input layer.
- The number of nodes in the hidden layer can be set by the user (default value is 100).

Because the number of nodes in the input layer is determined by the number of features in the training data, in a regression model there can be only one node in the output layer.

For

**Number of hidden nodes**, type the number of hidden nodes. The default is one hidden layer with 100 nodes. (This option is not available if you define a custom architecture using Net#.)For

**Learning rate**, type a value that defines the step taken at each iteration, before correction. A larger value for learning rate can cause the model to converge faster, but it can overshoot local minima.For

**Number of learning iterations**, specify the maximum number of times the algorithm processes the training cases.For

**The momentum**, type a value to apply during learning as a weight on nodes from previous iterations.Select the option,

**Shuffle examples**, to change the order of cases between iterations. If you deselect this option, cases are processed in exactly the same order each time you run the pipeline.For

**Random number seed**, you can optionally type a value to use as the seed. Specifying a seed value is useful when you want to ensure repeatability across runs of the same pipeline.Connect a training dataset and train the model:

If you set

**Create trainer mode**to**Single Parameter**, connect a tagged dataset and the Train Model module.If you set

**Create trainer mode**to**Parameter Range**, connect a tagged dataset and train the model by using Tune Model Hyperparameters.

Note

If you pass a parameter range to Train Model, it uses only the default value in the single parameter list.

If you pass a single set of parameter values to the Tune Model Hyperparameters module, when it expects a range of settings for each parameter, it ignores the values, and uses the default values for the learner.

If you select the

**Parameter Range**option and enter a single value for any parameter, that single value you specified is used throughout the sweep, even if other parameters change across a range of values.Submit the pipeline.

## Results

After training is complete:

- To save a snapshot of the trained model, select the
**Outputs**tab in the right panel of the**Train model**module. Select the**Register dataset**icon to save the model as a reusable module.

## Next steps

See the set of modules available to Azure Machine Learning.