Exemplo 2 Modelo
Dados aleatórios
Sempre embaralhe os dados antes do treino.
Quando um modelo é treinado, os dados são divididos em pequenos conjuntos (lotes). Cada lote é então alimentado ao modelo. O embaralhamento é importante para evitar que o modelo obtenha os mesmos dados novamente. Se usar os mesmos dados duas vezes, o modelo não poderá generalizar os dados e fornecer a saída correta. O embaralhamento fornece uma variedade melhor de dados em cada lote.
Exemplo
tf.util.shuffle(data);
Tensores de fluxo
Para usar o TensorFlow, os dados de entrada precisam ser convertidos em dados do tensor:
// 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]);
Normalização de dados
Os dados devem ser normalizados antes de serem usados em uma rede neural.
Um intervalo de 0 a 1 usando min-max geralmente é melhor para dados numéricos:
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));
Modelo Tensorflow
Um modelo de aprendizado de máquina é um algoritmo que produz saída a partir da entrada.
Este exemplo usa 3 linhas para definir um modelo de 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}));
Modelo de ML sequencial
const model = tf.sequential(); cria um modelo de ML sequencial .
Em um modelo sequencial, a entrada flui diretamente para a saída. Outros modelos podem ter várias entradas e várias saídas. Sequencial é o modelo de ML mais fácil. Ele permite que você construa um modelo camada por camada, com pesos que correspondem à próxima camada.
Camadas do TensorFlow
model.add() é usado para adicionar duas camadas ao modelo.
tf.layer.dense é um tipo de camada que funciona na maioria dos casos. Ele multiplica suas entradas por uma matriz de peso e adiciona um número (viés) ao resultado.
Formas e Unidades
inputShape: [1] porque temos 1 entrada (x = quartos).
unidades: 1 define o tamanho da matriz de pesos: 1 peso para cada entrada (valor x).
Compilando um modelo
Compile o modelo com um otimizador e função de perda especificados :
model.compile({loss: 'meanSquaredError', optimizer:'sgd'});
O compilador está configurado para usar o otimizador sgd . É simples de usar e bastante eficaz.
meanSquaredError é a função que queremos usar para comparar as previsões do modelo e os valores verdadeiros.