Utilizando:
- apoio do Gemini
- a referência da API do TensorFlow
- a documentação do TensorFlow
- o artigo tutorial de Gabriel Rufino: "Ensinando um computador a somar com TensorFlow.js e Machine Learning"
Aprendi o uso básico da biblioteca e alguns conceitos técnicos e práticos do Machine Learning.
Pontos principais do código:
await tf.ready();
// 1. Criar a arquitetura do modelo
const model = tf.sequential(); // https://js.tensorflow.org/api/latest/#sequential
model.add(tf.layers.dense({ // https://js.tensorflow.org/api/latest/#layers.dense
name: 'Parcelas',
inputShape: [2],
dtype: 'int32',
activation: 'relu',
units: 4
}));
model.add(tf.layers.dense({
name: 'Soma',
units: 1
}));
// 2. Definir os dados de treino
const listaInputs = [];
const listaOutputs = [];
// Gera 500 exemplos aleatórios de somas
for (let i = 0; i < 500; i++) {
// Gera números aleatórios entre -500 e 500
const n1 = Math.floor(Math.random() * 1000) - 500;
const n2 = Math.floor(Math.random() * 1000) - 500;
listaInputs.push([n1, n2]);
listaOutputs.push([n1 + n2]);
}
const inputs = tf.tensor2d(listaInputs, [500, 2]);
const outputs = tf.tensor2d(listaOutputs, [500, 1]);
// 3. Compilar o modelo com otimizador adam e perda de erro quadrático médio
model.compile({ // https://js.tensorflow.org/api/latest/#tf.LayersModel.compile
loss: 'meanSquaredError',
optimizer: tf.train.adam(0.1)
});
// 4. Treinar o modelo por 80 épocas
await model.fit(inputs, outputs, { // https://js.tensorflow.org/api/latest/#tf.LayersModel.fit
epochs: 80,
batchSize: 32,
shuffle: true
});
// 5. Fazer uma predição para 23 + 327 (O resultado esperado é 350)
const inputTeste = tf.tensor2d([23, 327], [1, 2]);
const resultado = model.predict(inputTeste); // https://js.tensorflow.org/api/latest/#tf.LayersModel.predict
const dadosResultado = await resultado.data();É isso.