介绍
机器学习在现代计算机技术中发挥着重要作用,涵盖了许多领域,如自然语言处理、计算机视觉和音频处理等。部署机器学习模型是在实际应用中使得机器学习变得重要的一部分。Express.js 是一个使用 Node.js 构建的 Web 应用框架。使用 Express.js 可以快速搭建 API,而 TensorFlow.js 是一个用于构建和部署机器学习模型的 JavaScript 库。在本教程中,我们将使用 Express.js 和 TensorFlow.js 构建一个机器学习模型,并将其部署在 Web 应用中。
环境设置
在开始本教程之前,请确保您已经安装了以下的环境:
- Node.js 环境可以通过 Node.js 官网 下载。
- 安装 Tensorflow.js,可以使用以下命令在终端中进行安装:
npm install @tensorflow/tfjs-node
- 安装 Express.js,可以使用以下命令在终端中进行安装:
npm install express
创建 Express.js 应用
创建一个新的目录,并在其中安装 Express.js 和 Tensorflow.js。在终端中输入以下命令:
mkdir express-tfjs cd express-tfjs npm init -y npm install express @tensorflow/tfjs-node
现在,我们来创建一个新的 app.js
文件。将以下代码添加到文件中:
// javascriptcn.com 代码示例 const express = require('express'); const app = express(); const tf = require('@tensorflow/tfjs-node'); app.get('/', (req, res) => { const x = tf.tensor2d([[1], [2], [3], [4]]); const y = tf.tensor2d([[1], [3], [5], [7]]); const m = tf.variable(tf.scalar(Math.random())); const b = tf.variable(tf.scalar(Math.random())); const output = x.mul(m).add(b); const loss = tf.losses.meanSquaredError(y, output); const optimizer = tf.train.sgd(0.1); optimizer.minimize(() => loss); res.send(`Hello, TensorFlow.js ${output.get(3, 0)}\n`); }); app.listen(3000, () => { console.log('Listening on port 3000'); });
该代码将创建一个简单的 Express.js 应用程序,并使用 TensorFlow.js 构建一个线性回归模型。在这个例子中,我们使用 tf.tensor2d
创建两个张量 x
和 y
,然后使用 tf.sg()
创建一个随机的变量 m
和 b
。在这个例子中,我们将 m
和 b
定义为已知值,因此我们可以使用 tf.scalar
创建张量。接下来,我们使用 x
,m
和 b
计算输出,并使用输出和 y
计算代价函数,并使用 tf.train.sgd
创建一个随机梯度下降优化器。最后,我们通过访问 output.get(3,0)
(即 x=4
时的预测值)来检测模型是否可以正常工作。
现在,请在终端中输入以下命令来启动应用程序:
node app.js
在浏览器中访问 http://localhost:3000
,您应该会看到以下输出:
Hello, TensorFlow.js 6.7829986572265625
更改模型
我们来更改一下模型。在我们的初始模型中,我们只是创建了一个简单的线性回归模型,并训练了几次。这里,我们将使用另一种方法,称为神经网络。我们将使用 Tensorflow.js 中的 Kelvin 的 API 来创建一个神经网络。将以下代码添加到 app.js
文件的末尾:
// javascriptcn.com 代码示例 const model = tf.sequential(); model.add(tf.layers.dense({inputShape: [1], units: 1})); model.compile({loss: 'meanSquaredError', optimizer: 'sgd'}); model.summary(); app.get('/train', (req, res) => { const x = tf.tensor2d([[1], [2], [3], [4]]); const y = tf.tensor2d([[1], [3], [5], [7]]); model.fit(x, y, {epochs: 10}) .then(() => { const predict = model.predict(tf.tensor2d([[5]])); res.send(`Predicted value: ${predict.dataSync()}`); }); });
该代码将创建一个新的神经网络模型,并添加一个简单的输入层和一个输出层。其中:
tf.sequential()
创建一个序列模型。tf.layers.dense()
创建一个全连接层,将一个输入张量连接到一个输出张量,通过inputShape
参数指定每个输入张量的形状,通过units
参数指定输出张量的维度。model.compile()
将模型编译为可训练的模型,并指定代价函数和优化器。model.summary()
输出模型的信息。
现在,在浏览器中访问 http://localhost:3000/train
,您应该会看到以下输出:
Predicted value: 9.464655876159668
总结
在本教程中,我们学习了如何使用 Express.js 和 TensorFlow.js 构建一个机器学习模型,并将其部署在 Web 应用中。我们了解了如何在 Express.js 应用程序中创建一个基本的线性回归模型,如何使用神经网络创建一个更为复杂的机器学习模型,并如何使用 TensorFlow.js API 进行训练。虽然本教程很基础,但它提供了一个很好的入门点,可以作为进一步学习的起点。您可以通过 Github 上的开源代码来了解更多详情。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/652c9cee7d4982a6ebe43f24