Esempio 2 Modello


Mescola i dati

Mescolare sempre i dati prima dell'allenamento.

Quando un modello viene addestrato, i dati vengono divisi in piccoli insiemi (batch). Ogni lotto viene quindi alimentato al modello. La riproduzione casuale è importante per evitare che il modello ottenga di nuovo gli stessi dati. Se si utilizzano due volte gli stessi dati, il modello non sarà in grado di generalizzare i dati e fornire l'output corretto. La mescolanza offre una migliore varietà di dati in ogni batch.

Esempio

tf.util.shuffle(data);

TensorFlow Tensors

Per utilizzare TensorFlow, i dati di input devono essere convertiti in dati tensoriali:

// Map x values to Tensor inputs
const inputs = values.map(obj => obj.x);
// Map y values to Tensor labels
const labels = values.map(obj => obj.y);

// Convert inputs and labels to 2d tensors
const inputTensor = tf.tensor2d(inputs, [inputs.length, 1]);
const labelTensor = tf.tensor2d(labels, [labels.length, 1]);

Normalizzazione dei dati

I dati devono essere normalizzati prima di essere utilizzati in una rete neurale.

Un intervallo compreso tra 0 e 1 utilizzando min-max è spesso il migliore per i dati numerici:

const inputMin = inputTensor.min();
const inputMax = inputTensor.max();
const labelMin = labelTensor.min();
const labelMax = labelTensor.max();
const nmInputs = inputTensor.sub(inputMin).div(inputMax.sub(inputMin));
const nmLabels = labelTensor.sub(labelMin).div(labelMax.sub(labelMin));

Modello Tensorflow

Un modello di apprendimento automatico è un algoritmo che produce output dall'input.

Questo esempio utilizza 3 righe per definire un modello ML :

const model = tf.sequential();
model.add(tf.layers.dense({inputShape: [1], units: 1, useBias: true}));
model.add(tf.layers.dense({units: 1, useBias: true}));

Modello ML sequenziale

const modello = tf.sequential(); crea un modello ML sequenziale .

In un modello sequenziale, l'input fluisce direttamente nell'output. Altri modelli possono avere più ingressi e più uscite. Sequential è il modello ML più semplice. Ti permette di costruire un modello strato per strato, con pesi che corrispondono al livello successivo.

Livelli TensorFlow

model.add() viene utilizzato per aggiungere due livelli al modello.

tf.layer.dense è un tipo di livello che funziona nella maggior parte dei casi. Moltiplica i suoi input per una matrice di peso e aggiunge un numero (bias) al risultato.

Forme e unità

inputShape: [1] perché abbiamo 1 input (x = stanze).

unità: 1 definisce la dimensione della matrice dei pesi: 1 peso per ogni input (valore x).


Compilazione di un modello

Compila il modello con un ottimizzatore e una funzione di perdita specificati :

model.compile({loss: 'meanSquaredError', optimizer:'sgd'});

Il compilatore è impostato per utilizzare l' ottimizzatore sgd . È semplice da usare e abbastanza efficace.

meanSquaredError è la funzione che vogliamo utilizzare per confrontare le previsioni del modello e i valori veri.