Main Content

trainscg

Retropropagación de gradiente conjugado escalado

Descripción

net.trainFcn = 'trainscg' establece la propiedad de red trainFcn.

ejemplo

[trainedNet,tr] = train(net,...) entrena la red con trainscg.

trainscg es una función de entrenamiento de red que actualiza los valores de peso y sesgo de acuerdo con el método gradiente conjugado escalado.

El entrenamiento se lleva a cabo según los parámetros de entrenamiento trainscg, que se muestran a continuación con sus valores predeterminados:

  • net.trainParam.epochs: número máximo de épocas que desea entrenar. El valor predeterminado es 1000.

  • net.trainParam.show: épocas entre muestras (NaN cuando no hay muestras). El valor predeterminado es 25.

  • net.trainParam.showCommandLine: generar una salida en la línea de comandos. El valor predeterminado es false.

  • net.trainParam.showWindow: mostrar la interfaz gráfica del entrenamiento. El valor predeterminado es true.

  • net.trainParam.goal: objetivo de rendimiento. El valor predeterminado es 0.

  • net.trainParam.time: tiempo máximo de entrenamiento en segundos. El valor predeterminado es inf.

  • net.trainParam.min_grad: gradiente mínimo de rendimiento. El valor predeterminado es 1e-6.

  • net.trainParam.max_fail: máximo de errores de validación. El valor predeterminado es 6.

  • net.trainParam.mu: parámetro de adaptación de Marquardt. El valor predeterminado es 0.005.

  • net.trainParam.sigma: determina cambios en el peso de la aproximación de la segunda derivada. El valor predeterminado es 5.0e-5.

  • net.trainParam.lambda: parámetro que regula la indefinición de la matriz hessiana. El valor predeterminado es 5.0e-7.

Ejemplos

contraer todo

Este ejemplo muestra cómo resolver un problema con entradas p y objetivos t mediante una red.

p = [0 1 2 3 4 5];
t = [0 0 0 1 1 1];

Se crea una red prealimentada de dos capas con dos neuronas ocultas y esta función de entrenamiento.

net = feedforwardnet(2,'trainscg');

Aquí se entrena y prueba la red.

net = train(net,p,t);
a = net(p)

Para ver otros ejemplos, consulte help feedforwardnet y help cascadeforwardnet.

Argumentos de entrada

contraer todo

Red de entrada, especificada como un objeto de red. Para crear un objeto de red, use feedforwardnet o narxnet, por ejemplo.

Argumentos de salida

contraer todo

Red entrenada, devuelta como un objeto network.

Registro de entrenamiento (epoch y perf), devuelto como una estructura cuyos campos dependen de la función de entrenamiento de la red (net.NET.trainFcn). Puede incluir campos como los siguientes:

  • Funciones y parámetros de entrenamiento, división de datos y rendimiento

  • Índices de división de datos para conjuntos de entrenamiento, validación y prueba

  • Máscaras de división de datos para conjuntos de entrenamiento, validación y prueba

  • Número de épocas (num_epochs) y la mejor época (best_epoch)

  • Una lista de los nombres de estado de entrenamiento (states)

  • Los campos de cada nombre de estado que registra su valor durante el entrenamiento

  • Rendimientos de la mejor red (best_perf, best_vperf y best_tperf)

Más acerca de

contraer todo

Uso de la red

Puede crear una red estándar que use trainscg con feedforwardnet o cascadeforwardnet. Para preparar una red personalizada que se entrene con trainscg:

  1. Establezca net.trainFcn en 'trainscg'. Esto establece net.trainParam en los parámetros predeterminados de trainscg.

  2. Establezca las propiedades net.trainParam en los valores que desee.

En cualquier caso, llamar a train con la red resultante entrena la red con trainscg.

Algoritmos

trainscg puede entrenar cualquier red, siempre y cuando su peso, entrada combinada y funciones de transferencia tengan funciones derivadas. La retropropagación se utiliza para calcular las derivadas del rendimiento perf con respecto a las variables de peso y sesgo X.

El algoritmo de gradiente conjugado escalado está basado en direcciones conjugadas, como en traincgp, traincgf y traincgb, pero este algoritmo no lleva a cabo ninguna búsqueda de línea en cada iteración. Para ver una explicación más detallada sobre el algoritmo de gradiente conjugado escalado, consulte Moller (Neural Networks, vol. 6, 1993, pp. 525–533).

El entrenamiento se detiene cuando tiene lugar alguna de estas condiciones:

  • Se ha alcanzado el número máximo de epochs (repeticiones).

  • Se ha sobrepasado el máximo de time.

  • El rendimiento se minimiza al goal.

  • El gradiente de rendimiento está por debajo de min_grad.

  • El rendimiento de validación (error de validación) ha aumentado más de max_fail veces desde la última vez que disminuyó (al utilizar la validación).

Referencias

[1] Moller. Neural Networks, Vol. 6, 1993, pp. 525–533

Historial de versiones

Introducido antes de R2006a