Introducció a TensorFlow.js
TensorFlow.js és una biblioteca de JavaScript per a l'entrenament i la implementació de models d'aprenentatge automàtic en el navegador i en Node.js. Aquesta biblioteca permet als desenvolupadors aprofitar la potència de TensorFlow directament en aplicacions web, oferint la capacitat de crear, entrenar i executar models de machine learning sense necessitat de backend.
Avantatges de TensorFlow.js
- Execució en el navegador: Permet executar models d'aprenentatge automàtic directament en el navegador, aprofitant la GPU del dispositiu.
- Interactivitat: Facilita la creació d'aplicacions interactives que poden respondre en temps real a les dades de l'usuari.
- Portabilitat: Els models creats amb TensorFlow.js poden ser utilitzats tant en aplicacions web com en aplicacions de Node.js.
- Integració amb altres biblioteques de JavaScript: Es pot integrar fàcilment amb altres biblioteques i frameworks de JavaScript com React, Angular, etc.
Instal·lació de TensorFlow.js
En el navegador
Per utilitzar TensorFlow.js en el navegador, només cal incloure la biblioteca en el teu fitxer HTML:
<!DOCTYPE html> <html> <head> <title>TensorFlow.js Example</title> <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs"></script> </head> <body> <script> // El teu codi de TensorFlow.js aquí </script> </body> </html>
En Node.js
Per utilitzar TensorFlow.js en un entorn Node.js, primer has d'instal·lar el paquet:
Després, pots requerir la biblioteca en el teu fitxer JavaScript:
Conceptes bàsics de TensorFlow.js
Creació de tensors
Els tensors són la unitat bàsica de dades en TensorFlow.js. Pots crear tensors utilitzant la funció tf.tensor
:
// Crear un tensor 1D const tensor1d = tf.tensor([1, 2, 3, 4]); // Crear un tensor 2D const tensor2d = tf.tensor([[1, 2], [3, 4]]);
Operacions amb tensors
TensorFlow.js proporciona una àmplia gamma d'operacions matemàtiques que es poden realitzar amb tensors:
const a = tf.tensor([1, 2, 3]); const b = tf.tensor([4, 5, 6]); // Suma de tensors const c = a.add(b); // Multiplicació de tensors const d = a.mul(b); // Mostrar el resultat c.print(); // [5, 7, 9] d.print(); // [4, 10, 18]
Models i capes
TensorFlow.js permet crear models de xarxes neuronals utilitzant l'API de Keras. Aquí tens un exemple de com crear un model simple:
const model = tf.sequential(); // Afegir una capa d'entrada model.add(tf.layers.dense({units: 32, inputShape: [784]})); // Afegir una capa de sortida model.add(tf.layers.dense({units: 10, activation: 'softmax'})); // Compilar el model model.compile({ optimizer: 'sgd', loss: 'categoricalCrossentropy', metrics: ['accuracy'] });
Entrenament del model
Per entrenar el model, utilitza la funció model.fit
:
const xs = tf.randomNormal([100, 784]); const ys = tf.randomUniform([100, 10]); model.fit(xs, ys, { epochs: 10, callbacks: { onEpochEnd: (epoch, logs) => { console.log(`Epoch ${epoch}: loss = ${logs.loss}`); } } });
Exemple pràctic: Classificació de dígits MNIST
Descripció del problema
El dataset MNIST és un conjunt de dades de dígits manuscrits que s'utilitza comunament per entrenar diversos sistemes de processament d'imatges. En aquest exemple, crearem un model simple per classificar aquests dígits utilitzant TensorFlow.js.
Carregant el dataset
TensorFlow.js proporciona una manera fàcil de carregar el dataset MNIST:
const mnist = require('mnist-data'); const data = mnist.training(0, 60000); const testData = mnist.testing(0, 10000); const xs = tf.tensor4d(data.images.values, [60000, 28, 28, 1]); const ys = tf.tensor2d(data.labels.values, [60000, 10]); const testXs = tf.tensor4d(testData.images.values, [10000, 28, 28, 1]); const testYs = tf.tensor2d(testData.labels.values, [10000, 10]);
Creant el model
Crearem un model de xarxa neuronal convolucional (CNN) per a la classificació de dígits:
const model = tf.sequential(); model.add(tf.layers.conv2d({ inputShape: [28, 28, 1], kernelSize: 3, filters: 32, activation: 'relu' })); model.add(tf.layers.maxPooling2d({poolSize: [2, 2]})); model.add(tf.layers.flatten()); model.add(tf.layers.dense({units: 128, activation: 'relu'})); model.add(tf.layers.dense({units: 10, activation: 'softmax'})); model.compile({ optimizer: 'adam', loss: 'categoricalCrossentropy', metrics: ['accuracy'] });
Entrenant el model
Entrenarem el model utilitzant el dataset MNIST:
model.fit(xs, ys, { epochs: 10, validationData: [testXs, testYs], callbacks: { onEpochEnd: (epoch, logs) => { console.log(`Epoch ${epoch}: loss = ${logs.loss}, accuracy = ${logs.acc}`); } } });
Avaluant el model
Després de l'entrenament, podem avaluar el model utilitzant el conjunt de dades de prova:
Exercicis pràctics
Exercici 1: Creació d'un tensor i operacions bàsiques
- Crea un tensor 2D de dimensions 3x3 amb valors aleatoris.
- Realitza una suma i una multiplicació element a element amb un altre tensor 2D de les mateixes dimensions.
- Mostra els resultats.
Solució
const tensorA = tf.randomNormal([3, 3]); const tensorB = tf.randomNormal([3, 3]); const sum = tensorA.add(tensorB); const product = tensorA.mul(tensorB); sum.print(); product.print();
Exercici 2: Creació i entrenament d'un model simple
- Crea un model seqüencial amb una capa d'entrada de 32 unitats i una capa de sortida de 10 unitats amb activació softmax.
- Compila el model amb l'optimitzador 'sgd' i la pèrdua 'categoricalCrossentropy'.
- Entrena el model amb dades aleatòries.
Solució
const model = tf.sequential(); model.add(tf.layers.dense({units: 32, inputShape: [784]})); model.add(tf.layers.dense({units: 10, activation: 'softmax'})); model.compile({ optimizer: 'sgd', loss: 'categoricalCrossentropy', metrics: ['accuracy'] }); const xs = tf.randomNormal([100, 784]); const ys = tf.randomUniform([100, 10]); model.fit(xs, ys, { epochs: 10, callbacks: { onEpochEnd: (epoch, logs) => { console.log(`Epoch ${epoch}: loss = ${logs.loss}`); } } });
Conclusió
En aquesta secció, hem explorat TensorFlow.js, una poderosa biblioteca que permet portar l'aprenentatge automàtic al navegador i a Node.js. Hem après a crear tensors, realitzar operacions amb ells, construir models de xarxes neuronals i entrenar-los. A més, hem vist un exemple pràctic de classificació de dígits utilitzant el dataset MNIST. Amb aquests coneixements, estàs preparat per començar a desenvolupar aplicacions d'aprenentatge automàtic en JavaScript.
Curs de TensorFlow
Mòdul 1: Introducció a TensorFlow
- Què és TensorFlow?
- Configuració de TensorFlow
- Conceptes bàsics de TensorFlow
- Hola món amb TensorFlow
Mòdul 2: Conceptes bàsics de TensorFlow
Mòdul 3: Gestió de dades a TensorFlow
Mòdul 4: Construcció de xarxes neuronals
- Introducció a les xarxes neuronals
- Creació d'una xarxa neuronal simple
- Funcions d'activació
- Funcions de pèrdua i optimitzadors
Mòdul 5: Xarxes neuronals convolucionals (CNNs)
Mòdul 6: Xarxes neuronals recurrents (RNNs)
- Introducció a les RNNs
- Construcció d'una RNN
- Memòria a llarg termini (LSTM)
- Unitats recurrents amb porta (GRUs)
Mòdul 7: Tècniques avançades de TensorFlow
- Capes i models personalitzats
- TensorFlow Hub
- Aprenentatge per transferència
- Ajust de hiperparàmetres