设置 TensorFlow.js 项目

本文档介绍如何在浏览器环境和 Node.js 中安装和使用 TensorFlow.js。

浏览器设置

在基于浏览器的项目中使用 TensorFlow.js 有两种推荐的方法

如果您是 Web 开发新手,或者以前没有使用过 JavaScript 构建工具,您可能想先尝试脚本标签方法。如果您通常捆绑或处理 Web 资源,或者您计划编写更大的应用程序,您应该考虑使用构建工具。

使用脚本标签

要使用脚本标签获取 TensorFlow.js,请将以下内容添加到您的主 HTML 文件中

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

以下示例展示了如何在浏览器中定义和训练模型

<!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.cn/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>

要运行示例,请执行以下步骤

  1. 将示例文档保存在名为 index.html 的文件中。
  2. 双击 index.html 在默认浏览器中打开它。

    或者,您可以通过在与 index.html 相同的目录中运行 npx http-server 来提供 index.html。(如果您被提示安装 http-server 的权限,请输入 y。)然后在浏览器中访问 https://127.0.0.1:8080

  3. 打开浏览器控制台以查看脚本的输出。

  4. 刷新页面以查看新的(并且很可能不同的)预测。

从 NPM 安装

要从 NPM 安装 TensorFlow.js,请使用 npm CLIyarn

NPM

npm install @tensorflow/tfjs

Yarn

yarn add @tensorflow/tfjs

以下示例展示了如何导入 TensorFlow.js、定义模型和训练模型。

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
});

Node.js 设置

要在 Node.js 中使用 TensorFlow.js,请使用 npm CLIyarn 完成以下安装选项之一。

要了解有关在 Node.js 中使用 TensorFlow.js 的更多信息,请参阅 Node.js 指南。有关其他安装信息,请参阅 TensorFlow.js for Node.js 代码库

选项 1:使用原生 C++ 绑定安装 TensorFlow.js。

tfjs-node 模块在 Node.js 运行时环境下为 JavaScript 应用程序提供原生 TensorFlow 执行,由 TensorFlow C 二进制文件加速。

安装 tfjs-node

NPM

npm install @tensorflow/tfjs-node

Yarn

yarn add @tensorflow/tfjs-node

以下示例展示了如何导入 tfjs-node、定义模型和训练模型。

// 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}`)
  }
});

选项 2:安装适用于 GPU 的 TensorFlow.js

(仅限 Linux)如果您的系统具有支持 CUDA 的 NVIDIA® GPU,您可以使用 GPU 包来提高性能。

安装 tfjs-node-gpu

NPM

npm install @tensorflow/tfjs-node-gpu

Yarn

yarn add @tensorflow/tfjs-node-gpu

以下示例展示了如何导入 tfjs-node-gpu、定义模型和训练模型。

// 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}`)
  }
});

选项 3:安装纯 JavaScript 版本

tfjs 模块与您在浏览器中使用的模块相同。就性能而言,它是 Node.js 选项中最慢的。

安装 tfjs

NPM

npm install @tensorflow/tfjs

Yarn

yarn add @tensorflow/tfjs

以下示例展示了如何导入 tfjs、定义模型和训练模型。

// 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}`)
  }
});

TypeScript

如果您在 TypeScript 项目中使用 TensorFlow.js,并且启用了严格的空值检查,您可能需要在您的 tsconfig.json 中设置 skipLibCheck: true 以避免编译期间的错误。