Main Content

Gradient descent backpropagation

`net.trainFcn = 'traingd'`

[net,tr] = train(net,...)

`traingd`

is a network training function that updates weight and bias
values according to gradient descent.

`net.trainFcn = 'traingd'`

sets the network `trainFcn`

property.

`[net,tr] = train(net,...)`

trains the network with
`traingd`

.

Training occurs according to `traingd`

training parameters, shown here
with their default values:

`net.trainParam.epochs` | `1000` | Maximum number of epochs to train |

`net.trainParam.goal` | `0` | Performance goal |

`net.trainParam.showCommandLine` | `false` | Generate command-line output |

`net.trainParam.showWindow` | `true` | Show training GUI |

`net.trainParam.lr` | `0.01` | Learning rate |

`net.trainParam.max_fail` | `6` | Maximum validation failures |

`net.trainParam.min_grad` | `1e-5` | Minimum performance gradient |

`net.trainParam.show` | `25` | Epochs between displays ( |

`net.trainParam.time` | `inf` | Maximum time to train in seconds |

You can create a standard network that uses `traingd`

with
`feedforwardnet`

or `cascadeforwardnet`

. To prepare a custom
network to be trained with `traingd`

,

Set

`net.trainFcn`

to`'traingd'`

. This sets`net.trainParam`

to`traingd`

’s default parameters.Set

`net.trainParam`

properties to desired values.

In either case, calling `train`

with the resulting network trains the
network with `traingd`

.

See `help feedforwardnet`

and `help cascadeforwardnet`

for examples.

`traingd`

can train any network as long as its weight, net input, and
transfer functions have derivative functions.

Backpropagation is used to calculate derivatives of performance `perf`

with respect to the weight and bias variables `X`

. Each variable is adjusted
according to gradient descent:

dX = lr * dperf/dX

Training stops when any of these conditions occurs:

The maximum number of

`epochs`

(repetitions) is reached.The maximum amount of

`time`

is exceeded.Performance is minimized to the

`goal`

.The performance gradient falls below

`min_grad`

.Validation performance has increased more than

`max_fail`

times since the last time it decreased (when using validation).