Contenido principal

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

trainAutoencoder

Entrenar un codificador automático

Descripción

autoenc = trainAutoencoder(X) devuelve un codificador automático, autoenc, entrenado usando los datos de entrenamiento de X.

ejemplo

autoenc = trainAutoencoder(X,hiddenSize) devuelve un codificador automático autoenc, con el tamaño de la representación oculta de hiddenSize.

autoenc = trainAutoencoder(___,Name,Value) devuelve un codificador automático autoenc, para cualquiera de los argumentos de entrada anteriores con opciones adicionales especificadas por uno o varios argumentos de par Name,Value.

Por ejemplo, puede especificar la proporción de escasez o el número máximo de iteraciones de entrenamiento.

ejemplo

Ejemplos

contraer todo

Cargue los datos de muestra.

X = abalone_dataset;

X es una matriz de 8 por 4177 que define ocho atributos para 4177 conchas de abulón diferentes: sexo (M, F e I [para crías]), longitud, diámetro, altura, peso total, peso desconchado, peso de las vísceras y peso de la concha. Para obtener más información sobre el conjunto de datos, escriba help abalone_dataset en la línea de comandos.

Entrene un codificador automático disperso con la configuración predeterminada.

autoenc = trainAutoencoder(X);

Figure Neural Network Training (20-Jul-2024 16:50:09) contains an object of type uigridlayout.

Reconstruya los datos de anillos de conchas de abulón utilizando el codificador automático entrenado.

XReconstructed = predict(autoenc,X);

Calcule el error de reconstrucción cuadrático medio.

mseError = mse(X-XReconstructed)
mseError = 
0.0167

Cargue los datos de muestra.

X = abalone_dataset;

X es una matriz de 8 por 4177 que define ocho atributos para 4177 conchas de abulón diferentes: sexo (M, F e I [para crías]), longitud, diámetro, altura, peso total, peso desconchado, peso de las vísceras y peso de la concha. Para obtener más información sobre el conjunto de datos, escriba help abalone_dataset en la línea de comandos.

Entrene un codificador automático disperso con tamaño oculto 4, 400 épocas máximas y función de transferencia lineal para el decodificador.

autoenc = trainAutoencoder(X,4,'MaxEpochs',400,...
'DecoderTransferFunction','purelin');

Figure Neural Network Training (20-Jul-2024 16:53:54) contains an object of type uigridlayout.

Reconstruya los datos de anillos de conchas de abulón utilizando el codificador automático entrenado.

XReconstructed = predict(autoenc,X);

Calcule el error de reconstrucción cuadrático medio.

mseError = mse(X-XReconstructed)
mseError = 
0.0046

Genere los datos de entrenamiento.

rng(0,'twister'); % For reproducibility
n = 1000;
r = linspace(-10,10,n)';
x = 1 + r*5e-2 + sin(r)./r + 0.2*randn(n,1);

Entrene el codificador automático con los datos de entrenamiento.

hiddenSize = 25;
autoenc = trainAutoencoder(x',hiddenSize,...
        'EncoderTransferFunction','satlin',...
        'DecoderTransferFunction','purelin',...
        'L2WeightRegularization',0.01,...
        'SparsityRegularization',4,...
        'SparsityProportion',0.10);

Figure Neural Network Training (20-Jul-2024 16:54:06) contains an object of type uigridlayout.

Genere los datos de prueba.

n = 1000;
r = sort(-10 + 20*rand(n,1));
xtest = 1 + r*5e-2 + sin(r)./r + 0.4*randn(n,1);

Prediga los datos de prueba con el codificador automático entrenado, autoenc.

xReconstructed = predict(autoenc,xtest');

Represente los datos de prueba reales y las predicciones.

figure;
plot(xtest,'r.');
hold on
plot(xReconstructed,'go');

Figure contains an axes object. The axes object contains 2 objects of type line. One or more of the lines displays its values using only markers

Cargue los datos de entrenamiento.

XTrain = digitTrainCellArrayData;

Los datos de entrenamiento son un arreglo de 1 por 5000 celdas, donde cada celda contiene una matriz de 28 por 28 que representa una imagen sintética de un dígito manuscrito.

Entrene un codificador automático con una capa oculta que contenga 25 neuronas.

hiddenSize = 25;
autoenc = trainAutoencoder(XTrain,hiddenSize,...
        'L2WeightRegularization',0.004,...
        'SparsityRegularization',4,...
        'SparsityProportion',0.15);

Cargue los datos de prueba.

XTest = digitTestCellArrayData;

Los datos de prueba son un arreglo de 1 por 5000 celdas, donde cada celda contiene una matriz de 28 por 28 que representa una imagen sintética de un dígito manuscrito.

Reconstruya los datos de imagen de prueba con el codificador automático entrenado, autoenc.

xReconstructed = predict(autoenc,XTest);

Visualice los datos de prueba reales.

figure;
for i = 1:20
    subplot(4,5,i);
    imshow(XTest{i});
end

Visualice los datos de prueba reconstruidos.

figure;
for i = 1:20
    subplot(4,5,i);
    imshow(xReconstructed{i});
end

Argumentos de entrada

contraer todo

Datos de entrenamiento, especificados como una matriz de muestras de entrenamiento o un arreglo de celdas de datos de imagen. Si X es una matriz, entonces cada columna contiene una sola muestra. Si X es un arreglo de celdas de datos de imagen, entonces los datos de cada celda deben tener el mismo número de dimensiones. Los datos de imagen pueden ser datos de intensidad de píxeles para imágenes en escala de grises, en cuyo caso cada celda contiene una matriz de m por n. De forma alternativa, los datos de imagen pueden ser datos RGB, en cuyo caso cada celda contiene una matriz de m por n por 3.

Tipos de datos: single | double | cell

Tamaño de la representación oculta del codificador automático, especificado como un valor entero positivo. Este número es el número de neuronas de la capa oculta.

Tipos de datos: single | double

Argumentos de par nombre-valor

contraer todo

Especifique pares de argumentos opcionales como Name1=Value1,...,NameN=ValueN, donde Name es el nombre del argumento y Value es el valor correspondiente. Los argumentos de nombre-valor deben aparecer después de otros argumentos. Sin embargo, el orden de los pares no importa.

En las versiones anteriores a la R2021a, utilice comas para separar cada nombre y valor, y encierre Name entre comillas.

Ejemplo: 'EncoderTransferFunction','satlin','L2WeightRegularization',0.05 especifica la función de transferencia para el codificador como la función de transferencia lineal saturante positiva y la regularización del peso L2 como 0,05.

Función de transferencia del codificador, especificada como el par separado por comas que consta de 'EncoderTransferFunction' y uno de los siguientes:

Opción de la función de transferenciaDefinición
'logsig'

Función sigmoide logística

f(z)=11+ez

'satlin'

Función de transferencia lineal saturada positiva

f(z)={0,if z0z,if 0<z<11,if z1

Ejemplo: 'EncoderTransferFunction','satlin'

Función de transferencia del decodificador, especificada como el par separado por comas que consta de 'DecoderTransferFunction' y uno de los siguientes:

Opción de la función de transferenciaDefinición
'logsig'

Función sigmoide logística

f(z)=11+ez

'satlin'

Función de transferencia lineal saturada positiva

f(z)={0,if z0z,if 0<z<11,if z1

'purelin'

Función de transferencia lineal

f(z)=z

Ejemplo: 'DecoderTransferFunction','purelin'

Número máximo de épocas de entrenamiento o iteraciones, especificado como el par separado por comas que consta de 'MaxEpochs' y un entero positivo.

Ejemplo: 'MaxEpochs',1200

El coeficiente para el regularizador de peso L2 en la función de coste (LossFunction), especificado como el par separado por comas que consta de 'L2WeightRegularization' y un valor escalar positivo.

Ejemplo: 'L2WeightRegularization',0.05

Función de pérdida que se desea usar para el entrenamiento, especificada como el par separado por comas que consta de 'LossFunction' y 'msesparse'. Corresponde a la función de error cuadrático medio ajustada para entrenar un codificador automático disperso de la siguiente manera:

E=1Nn=1Nk=1K(xknx^kn)2mean squared error+λ*ΩweightsL2regularization+β*Ωsparsitysparsityregularization,

donde λ es el coeficiente del término de regularización L2 y β es el coeficiente del término de regularización de escasez. Puede especificar los valores de λ y β utilizando los argumentos de par nombre-valor L2WeightRegularization y SparsityRegularization, respectivamente, mientras entrena un codificador automático.

Indicador para mostrar la ventana de entrenamiento, especificado como el par separado por comas que consta de 'ShowProgressWindow' y true o false.

Ejemplo: 'ShowProgressWindow',false

Proporción deseada de ejemplos de entrenamiento a los que reacciona una neurona, especificada como el par separado por comas que consta de 'SparsityProportion' y un valor escalar positivo. La proporción de escasez es un parámetro del regularizador de escasez. Controla la escasez de la salida desde la capa oculta. Un valor bajo de SparsityProportion generalmente lleva a que cada neurona de la capa oculta se "especialice" al proporcionar solo una salida alta para una pequeña cantidad de ejemplos de entrenamiento. Por lo tanto, una proporción de escasez baja fomenta un mayor grado de escasez. Consulte Sparse Autoencoders.

Ejemplo: 'SparsityProportion',0.01 equivale a decir que cada neurona de la capa oculta debe tener una salida media de 0,1 en los ejemplos de entrenamiento.

Coeficiente que controla el impacto del regularizador de escasez en la función de coste, especificado como el par separado por comas que consta de 'SparsityRegularization' y un valor escalar positivo.

Ejemplo: 'SparsityRegularization',1.6

El algoritmo que se desea utilizar para entrenar el codificador automático, especificado como el par separado por comas que consta de 'TrainingAlgorithm' y 'trainscg'. Significa gradiente descendente conjugado escalado [1].

Indicador para volver a escalar los datos de entrada, especificado como el par separado por comas que consta de 'ScaleData' y true o false.

Los codificadores automáticos intentan replicar la entrada en la salida. Para que sea posible, el rango de los datos de entrada debe coincidir con el rango de la función de transferencia del decodificador. trainAutoencoder escala automáticamente los datos de entrenamiento para que se ajusten a este rango al entrenar un codificador automático. Si los datos se escalaron durante el entrenamiento de un codificador automático, los métodos predict, encode y decode también escalan los datos.

Ejemplo: 'ScaleData',false

Indicador para usar la GPU para el entrenamiento, especificado como el par separado por comas que consta de 'UseGPU' y true o false.

Ejemplo: 'UseGPU',true

Argumentos de salida

contraer todo

Codificador automático entrenado, devuelto como objeto Autoencoder. Para obtener información sobre las propiedades y los métodos de este objeto, consulte la página de clase Autoencoder.

Más acerca de

contraer todo

Referencias

[1] Moller, M. F. “A Scaled Conjugate Gradient Algorithm for Fast Supervised Learning”, Neural Networks, Vol. 6, 1993, pp. 525–533.

[2] Olshausen, B. A. and D. J. Field. “Sparse Coding with an Overcomplete Basis Set: A Strategy Employed by V1.” Vision Research, Vol.37, 1997, pp.3311–3325.

Historial de versiones

Introducido en R2015b