使用 tensorflow.js,不仅可以在浏览器中运行机器学习模型来执行推理,还可以训练它们。在本教程中,将向您展示一个基本的 “hello world” 示例,通过该实例开启我们的全新旅程。
让我们从一个最简单的网页开始:
完成后,需要做的第一件事是添加对 tensorflow.js 的引用,以便我们可以在浏览器环境中使用 tensorflow api。为方便起见,可以从 cdn 上获取 js 文件:
在写这篇文章时使用的 tensorflow.js 版本是 0.11.2。如果想获取最新版本,我们可以从 github 查看。
现在我们已经成功加载了 tensorflow.js,让我们用它做一些有趣的事情吧!
现在有一条公式为 y = 2x-1 的直线。并提供你一组点,如(-1,-3),(0,-1),(1,1),(2,3),(3,5)和(4,7)。虽然通过公式我们可以得出给定 x 的 y 值,我们是否可以通过机械学习模型推导出 y 值呢?
首先,我们可以创建一个简单的神经网络来进行推理。由于只有 1 个输入值和 1 个输出值,因此它可以是单节点。在 javascript 中,我们可以创建一个 tf.sequential,并添加图层定义。代码示例如下:
const model = tf.sequential();model.add(tf.layers.dense({units: 1, inputshape: [1]}));
为了完成模型定义,我们需要执行编译,并指定损失类型和优化器。我们将选择最基本的损失类型 - meansquarederror,同时优化器使用标准的
stochastic gradient descent:
model.compile({loss: 'meansquarederror', optimizer: 'sgd' });
为了训练模型,我们需要定义张量,并指定其形状:
const xs = tf.tensor2d([-1, 0, 1, 2, 3, 4], [6, 1]);const ys = tf.tensor2d([-3, -1, 1, 3, 5, 7], [6, 1]);
为了训练模型,我们使用 fit 方法。为此,我们传递一组 x 和 y 值,以及 epochs(循环数据)。请注意,这是异步(async/await)的,因此所有这些代码都需要在异步函数中:
await model.fit(xs, ys, {epochs: 500});
一旦准备就绪,模型就会被训练,我们就可以基于 x 值预测 y。例如,如果我们想要找出 x = 10的 y 值并将其写在 web 页面上的 中,代码如下所示:
document.getelementbyid('output_field').innertext = model.predict(tf.tensor2d([10], [1, 1]));
请注意,输入是包含值 10 的 1x1 的张量。
结果如下所示:
等等,你可能会问 —— 为什么不是 19?它非常接近,但它不是 19!这是因为该算法从未被赋予公式 —— 它只是根据给出的少量数据进行学习。有了更多的相关数据进行训练,ml 模型就会提供更高的准确性。
为了方便起见,完整代码如下所示:
这就是在浏览器环境中使用 tensorflow.js 创建一个非常简单的机械学习模型所需要的一切。从这里开始,我们将进入崭新的世界!
星恒锂电池将亮相天津展,实力战将吸睛“杀手锏”引猜想
莫大康:半导体业成功的信心来自那里?|求是缘半导体联盟
FlexRay总线系统的功能及常见故障
VR面临销售增长缓慢的成长的烦恼
微软Ansys Twin Builder软件数字孪生实现AI自动化
基本的“Hello World”示例,通过该实例开启我们的全新旅程
HNLC-100A直流电阻快速测试仪(大电流)
微切片制作(四)
物联网发展迅猛 500亿助力智慧城市产业化
什么是励磁系统电压响应比?何谓高起始响应?
线性调整器的反相开关型调整器
权威发布-OpenHarmony 高校师资培训开启报名(物联网理论+实践)
人工智能重塑产业的奇点临近
使用电位器应注意的事项
真我V20轻薄长续航国潮手机开售,领跑千元5G
车载空气净化器创意设计丰富了产品的功能体验
沁恒股份串口转USB键盘芯片:CH9328概述
半导体行业影响甚大的并购案例总结
GIC驱动设备信息添加
CAN总线一致性测试中的容错性测试介绍