Esta página se tradujo automáticamente con la API de traducción de Google Cloud.
Algunas páginas se pueden leer mejor en su totalidad.
El aprendizaje profundo es una herramienta poderosa para aprender representaciones complejas de datos. Un autocodificador es un tipo de red neuronal que se puede utilizar para aprender estas representaciones sin supervisión.
En esta publicación, usaremos TensorFlow.js y Node.js para crear un codificador automático simple. Usaremos el conjunto de datos MNIST, que consta de imágenes de dígitos escritos a mano.
Primero, necesitamos instalar las dependencias. Usaremos las siguientes bibliotecas:
Puede instalarlos usando npm:
npm install tensorflowjs mnist
A continuación, necesitamos cargar el conjunto de datos MNIST. Usaremos la biblioteca mnist para hacer esto:
const mnist = require('mnist');
// Load the dataset
const dataset = mnist.set(0.7, 0.3);
// Get the training and test sets
const [train, test] = dataset.getTrainingAndTestSets();
El conjunto de datos MNIST consta de imágenes de dígitos escritos a mano, cada uno de los cuales tiene 28x28 píxeles. Tendremos que aplanar estas imágenes en vectores de tamaño 784 antes de poder usarlas como entrada para nuestro codificador automático.
// Flatten the images into vectors
const trainX = train.map(example => example.input);
const testX = test.map(example => example.input);
Ahora que tenemos el conjunto de datos, podemos comenzar a construir el codificador automático. Usaremos una red neuronal completamente conectada con una capa oculta. La capa oculta tendrá un número menor de unidades que la capa de entrada, lo que obligará a la red a aprender una representación comprimida de los datos.
// Create the model
const model = tf.sequential();
// Add the input layer
model.add(tf.layers.dense({
inputShape: [784],
units: 64
}));
// Add the hidden layer
model.add(tf.layers.dense({
units: 32
}));
// Add the output layer
model.add(tf.layers.dense({
units: 784
}));
Necesitamos especificar un optimizador y una función de pérdida para el modelo. Usaremos el optimizador de Adam y la función de pérdida del error cuadrático medio (MSE).
// Compile the model
model.compile({
optimizer: 'adam',
loss: 'meanSquaredError'
});
Ahora que tenemos el modelo, podemos entrenarlo en el conjunto de entrenamiento. Entrenaremos el modelo durante 20 épocas.
// Train the model
model.fit(tf.tensor2d(trainX), tf.tensor2d(trainX), {
epochs: 20
}).then(() => {
// Evaluate the model on the test set
model.evaluate(tf.tensor2d(testX), tf.tensor2d(testX));
});
Para visualizar los resultados del entrenamiento, podemos usar la biblioteca tensorflow-vis
para trazar las imágenes reconstruidas.
// Install the library
npm install @tensorflow/tfjs-vis
// Load the library
const tfvis = require('@tensorflow/tfjs-vis');
// Plot the results
tfvis.show.image3d(
model.predict(tf.tensor2d(testX)),
{
width: 28,
height: 28
}
);
En esta publicación, hemos visto cómo usar TensorFlow.js y Node.js para crear un codificador automático simple. También hemos visto cómo entrenar el codificador automático y visualizar los resultados.
Los codificadores automáticos se pueden usar para una variedad de tareas, como la reducción de dimensionalidad, la eliminación de ruido y el modelado generativo. Si está interesado en obtener más información sobre los codificadores automáticos, le recomiendo los siguientes recursos: