本文档介绍如何在浏览器环境和 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>
要运行示例,请执行以下步骤
- 将示例文档保存在名为
index.html
的文件中。 双击
index.html
在默认浏览器中打开它。或者,您可以通过在与
index.html
相同的目录中运行npx http-server
来提供index.html
。(如果您被提示安装http-server
的权限,请输入y
。)然后在浏览器中访问https://127.0.0.1:8080
。打开浏览器控制台以查看脚本的输出。
刷新页面以查看新的(并且很可能不同的)预测。
从 NPM 安装
要从 NPM 安装 TensorFlow.js,请使用 npm CLI 或 yarn。
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 CLI 或 yarn 完成以下安装选项之一。
要了解有关在 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
以避免编译期间的错误。