使用 TensorFlow.js,不僅可以在瀏覽器中運(yùn)行機(jī)器學(xué)習(xí)模型來(lái)執(zhí)行推理,還可以訓(xùn)練它們。在本教程中,將向您展示一個(gè)基本的 “Hello World” 示例,通過(guò)該實(shí)例開(kāi)啟我們的全新旅程。
讓我們從一個(gè)最簡(jiǎn)單的網(wǎng)頁(yè)開(kāi)始:
完成后,需要做的第一件事是添加對(duì) TensorFlow.js 的引用,以便我們可以在瀏覽器環(huán)境中使用 TensorFlow API。為方便起見(jiàn),可以從 CDN 上獲取 JS 文件:
在寫(xiě)這篇文章時(shí)使用的 TensorFlow.js 版本是 0.11.2。如果想獲取最新版本,我們可以從 GitHub 查看。
現(xiàn)在我們已經(jīng)成功加載了 TensorFlow.js,讓我們用它做一些有趣的事情吧!
現(xiàn)在有一條公式為 Y = 2X-1 的直線。并提供你一組點(diǎn),如(-1,-3),(0,-1),(1,1),(2,3),(3,5)和(4,7)。雖然通過(guò)公式我們可以得出給定 X 的 Y 值,我們是否可以通過(guò)機(jī)械學(xué)習(xí)模型推導(dǎo)出 Y 值呢?
首先,我們可以創(chuàng)建一個(gè)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)來(lái)進(jìn)行推理。由于只有 1 個(gè)輸入值和 1 個(gè)輸出值,因此它可以是單節(jié)點(diǎn)。在 JavaScript 中,我們可以創(chuàng)建一個(gè) tf.sequential,并添加圖層定義。代碼示例如下:
const model = tf.sequential();model.add(tf.layers.dense({units: 1, inputShape: [1]}));
為了完成模型定義,我們需要執(zhí)行編譯,并指定損失類型和優(yōu)化器。我們將選擇最基本的損失類型 - meanSquaredError,同時(shí)優(yōu)化器使用標(biāo)準(zhǔn)的
Stochastic Gradient Descent:
model.compile({loss: 'meanSquaredError', optimizer: 'sgd' });
為了訓(xùn)練模型,我們需要定義張量,并指定其形狀:
const xs = tf.tensor2d([-1, 0, 1, 2, 3, 4], [6, 1]);const ys = tf.tensor2d([-3, -1, 1, 3, 5, 7], [6, 1]);
為了訓(xùn)練模型,我們使用 fit 方法。為此,我們傳遞一組 X 和 Y 值,以及 epochs(循環(huán)數(shù)據(jù))。請(qǐng)注意,這是異步(async/await)的,因此所有這些代碼都需要在異步函數(shù)中:
await model.fit(xs, ys, {epochs: 500});
一旦準(zhǔn)備就緒,模型就會(huì)被訓(xùn)練,我們就可以基于 X 值預(yù)測(cè) Y。例如,如果我們想要找出 X = 10的 Y 值并將其寫(xiě)在 Web 頁(yè)面上的
document.getElementById('output_field').innerText = model.predict(tf.tensor2d([10], [1, 1]));
請(qǐng)注意,輸入是包含值 10 的 1x1 的張量。
結(jié)果如下所示:
等等,你可能會(huì)問(wèn) —— 為什么不是 19?它非常接近,但它不是 19!這是因?yàn)樵?a href="https://m.elecfans.com/v/tag/2562/" target="_blank">算法從未被賦予公式 —— 它只是根據(jù)給出的少量數(shù)據(jù)進(jìn)行學(xué)習(xí)。有了更多的相關(guān)數(shù)據(jù)進(jìn)行訓(xùn)練,ML 模型就會(huì)提供更高的準(zhǔn)確性。
為了方便起見(jiàn),完整代碼如下所示:
這就是在瀏覽器環(huán)境中使用 TensorFlow.js 創(chuàng)建一個(gè)非常簡(jiǎn)單的機(jī)械學(xué)習(xí)模型所需要的一切。從這里開(kāi)始,我們將進(jìn)入嶄新的世界!
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4797瀏覽量
102408 -
瀏覽器
+關(guān)注
關(guān)注
1文章
1040瀏覽量
35992 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8481瀏覽量
133876
原文標(biāo)題:快速入門(mén) TensorFlow.js
文章出處:【微信號(hào):tensorflowers,微信公眾號(hào):Tensorflowers】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
鴻蒙OpenHarmony【標(biāo)準(zhǔn)系統(tǒng)編寫(xiě)“Hello World”程序】 (基于RK3568開(kāi)發(fā)板)

微雪Arduino系列教程五:Hello World
Arduino Hello World實(shí)驗(yàn)
如何下載一個(gè)簡(jiǎn)單的Hello World示例
在Arduino上創(chuàng)建一個(gè)Hello World程序
Android開(kāi)發(fā)之“hello World”的實(shí)現(xiàn)

MICROCHIP MINUTES 4 - HELLO WORLD
ZYNQ嵌入式系統(tǒng)-Hello World 實(shí)驗(yàn)

基于Nios 的 hello world

STM32開(kāi)發(fā)入門(mén)(二)——Hello World

Zynq上使用Vitis的雙ARM Hello World

評(píng)論