Configurar um projeto TensorFlow.js

Este documento mostra como instalar e usar o TensorFlow.js em um ambiente de navegador e em Node.js.

Configuração do navegador

Há duas maneiras recomendadas de usar o TensorFlow.js em um projeto baseado em navegador:

Se você é novo no desenvolvimento web ou nunca usou ferramentas de construção JavaScript antes, você pode tentar primeiro a abordagem de tag de script. Se você costuma agrupar ou processar seus ativos da web ou planeja escrever aplicativos maiores, considere usar ferramentas de construção.

Use uma tag de script

Para obter o TensorFlow.js usando uma tag de script, adicione o seguinte ao seu arquivo HTML principal:

<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@latest/dist/tf.min.js"></script>

O exemplo a seguir mostra como definir e treinar um modelo no navegador:

<!DOCTYPE html>
<html lang="en-US">
  <head>
    <meta charset="utf-8" />
    <title>TensorFlow.js browser example</title>

    <!-- Load TensorFlow.js from a script tag -->
    <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@latest/dist/tf.min.js"></script>
  </head>
  <body>
    <h1>TensorFlow.js example</h1>
    <h2>Open the console to see the results.</h2>
    <script>
    // Define a model for linear regression. The script tag makes `tf` available
    // as a global variable.
    const model = tf.sequential();
    model.add(tf.layers.dense({units: 1, inputShape: [1]}));

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

    // Generate some synthetic data for training.
    const xs = tf.tensor2d([1, 2, 3, 4], [4, 1]);
    const ys = tf.tensor2d([1, 3, 5, 7], [4, 1]);

    // Train the model using the data.
    model.fit(xs, ys, {epochs: 10}).then(() => {
      // Use the model to do inference on a data point the model hasn't seen before:
      model.predict(tf.tensor2d([5], [1, 1])).print();
      // Open the browser devtools to see the output
    });
    </script>
  </body>
</html>

Para executar o exemplo, siga estas etapas:

  1. Salve o documento de exemplo em um arquivo chamado index.html .
  2. Clique duas vezes index.html para abri-lo em seu navegador padrão.

    Alternativamente, você pode servir index.html executando npx http-server no mesmo diretório que index.html . (Se for solicitada permissão para instalar http-server , digite y .) Em seguida, vá para http://localhost:8080 em seu navegador.

  3. Abra o console do navegador para ver a saída do script.

  4. Atualize a página para ver uma previsão nova (e muito provavelmente diferente).

Instalar a partir do NPM

Para instalar o TensorFlow.js do NPM, use a CLI do npm ou o yarn .

NPM

npm install @tensorflow/tfjs

Fio

yarn add @tensorflow/tfjs

O exemplo a seguir mostra como importar o TensorFlow.js, definir um modelo e treiná-lo.

import * as tf from '@tensorflow/tfjs';

// Define a model for linear regression.
const model = tf.sequential();
model.add(tf.layers.dense({units: 1, inputShape: [1]}));

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

// Generate some synthetic data for training.
const xs = tf.tensor2d([1, 2, 3, 4], [4, 1]);
const ys = tf.tensor2d([1, 3, 5, 7], [4, 1]);

// Train the model using the data.
model.fit(xs, ys, {epochs: 10}).then(() => {
  // Use the model to do inference on a data point the model hasn't seen before:
  model.predict(tf.tensor2d([5], [1, 1])).print();
  // Open the browser devtools to see the output
});

Configuração do Node.js.

Para usar TensorFlow.js em Node.js, use a CLI npm ou o fio para concluir uma das opções de instalação abaixo.

Para saber mais sobre como usar o TensorFlow.js no Node.js, consulte o guia do Node.js. Para obter informações adicionais de instalação, consulte o repositório TensorFlow.js para Node.js.

Opção 1: instale o TensorFlow.js com vinculações C++ nativas.

O módulo tfjs-node fornece execução nativa do TensorFlow em aplicativos JavaScript no tempo de execução Node.js, acelerado pelo binário TensorFlow C.

Instale tfjs-node :

NPM

npm install @tensorflow/tfjs-node

Fio

yarn add @tensorflow/tfjs-node

O exemplo a seguir mostra como importar tfjs-node , definir um modelo e treinar o modelo.

// Use `tfjs-node`. Note that `tfjs` is imported indirectly by `tfjs-node`.
const tf = require('@tensorflow/tfjs-node');

// Define a simple model.
const model = tf.sequential();
model.add(tf.layers.dense({units: 100, activation: 'relu', inputShape: [10]}));
model.add(tf.layers.dense({units: 1, activation: 'linear'}));
model.compile({optimizer: 'sgd', loss: 'meanSquaredError'});

const xs = tf.randomNormal([100, 10]);
const ys = tf.randomNormal([100, 1]);

// Train the model.
model.fit(xs, ys, {
  epochs: 100,
  callbacks: {
    onEpochEnd: (epoch, log) => console.log(`Epoch ${epoch}: loss = ${log.loss}`)
  }
});

Opção 2: instalar TensorFlow.js para GPU

(Somente Linux) Se o seu sistema tiver uma GPU NVIDIA® com suporte CUDA , você poderá usar o pacote GPU para melhorar o desempenho.

Instale tfjs-node-gpu :

NPM

npm install @tensorflow/tfjs-node-gpu

Fio

yarn add @tensorflow/tfjs-node-gpu

O exemplo a seguir mostra como importar tfjs-node-gpu , definir um modelo e treinar o modelo.

// Use `tfjs-node-gpu`. Note that `tfjs` is imported indirectly by `tfjs-node-gpu`.
const tf = require('@tensorflow/tfjs-node-gpu');

// Define a simple model.
const model = tf.sequential();
model.add(tf.layers.dense({units: 100, activation: 'relu', inputShape: [10]}));
model.add(tf.layers.dense({units: 1, activation: 'linear'}));
model.compile({optimizer: 'sgd', loss: 'meanSquaredError'});

const xs = tf.randomNormal([100, 10]);
const ys = tf.randomNormal([100, 1]);

// Train the model.
model.fit(xs, ys, {
  epochs: 100,
  callbacks: {
    onEpochEnd: (epoch, log) => console.log(`Epoch ${epoch}: loss = ${log.loss}`)
  }
});

Opção 3: instale a versão JavaScript pura

O módulo tfjs é o mesmo pacote que você usaria no navegador. É a opção mais lenta do Node.js em termos de desempenho.

Instale tfjs :

NPM

npm install @tensorflow/tfjs

Fio

yarn add @tensorflow/tfjs

O exemplo a seguir mostra como importar tfjs , definir um modelo e treinar o modelo.

// Use `tfjs`.
const tf = require('@tensorflow/tfjs');

// Define a simple model.
const model = tf.sequential();
model.add(tf.layers.dense({units: 100, activation: 'relu', inputShape: [10]}));
model.add(tf.layers.dense({units: 1, activation: 'linear'}));
model.compile({optimizer: 'sgd', loss: 'meanSquaredError'});

const xs = tf.randomNormal([100, 10]);
const ys = tf.randomNormal([100, 1]);

// Train the model.
model.fit(xs, ys, {
  epochs: 100,
  callbacks: {
    onEpochEnd: (epoch, log) => console.log(`Epoch ${epoch}: loss = ${log.loss}`)
  }
});

Texto datilografado

Se você estiver usando TensorFlow.js em um projeto TypeScript e tiver a verificação estrita de nulos habilitada, talvez seja necessário definir skipLibCheck: true em seu tsconfig.json para evitar erros durante a compilação.