使用 TensorFlow.js,不僅可以在瀏覽器中運(yùn)行機(jī)器學(xué)習(xí)模型來執(zhí)行推理,還可以訓(xùn)練它們。在本教程中,將向您展示一個(gè)基本的 “Hello World” 示例,通過該實(shí)例開啟我們的全新旅程。
讓我們從一個(gè)最簡單的網(wǎng)頁開始:
完成后,需要做的第一件事是添加對 TensorFlow.js 的引用,以便我們可以在瀏覽器環(huán)境中使用 TensorFlow API。為方便起見,可以從 CDN 上獲取 JS 文件:
在寫這篇文章時(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)。雖然通過公式我們可以得出給定 X 的 Y 值,我們是否可以通過機(jī)械學(xué)習(xí)模型推導(dǎo)出 Y 值呢?
首先,我們可以創(chuàng)建一個(gè)簡單的神經(jīng)網(wǎng)絡(luò)來進(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ù))。請注意,這是異步(async/await)的,因此所有這些代碼都需要在異步函數(shù)中:
await model.fit(xs, ys, {epochs: 500});
一旦準(zhǔn)備就緒,模型就會(huì)被訓(xùn)練,我們就可以基于 X 值預(yù)測 Y。例如,如果我們想要找出 X = 10的 Y 值并將其寫在 Web 頁面上的
document.getElementById('output_field').innerText = model.predict(tf.tensor2d([10], [1, 1]));
請注意,輸入是包含值 10 的 1x1 的張量。
結(jié)果如下所示:
等等,你可能會(huì)問 —— 為什么不是 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)確性。
為了方便起見,完整代碼如下所示:
這就是在瀏覽器環(huán)境中使用 TensorFlow.js 創(chuàng)建一個(gè)非常簡單的機(jī)械學(xué)習(xí)模型所需要的一切。從這里開始,我們將進(jìn)入嶄新的世界!
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4820瀏覽量
106306 -
瀏覽器
+關(guān)注
關(guān)注
1文章
1042瀏覽量
36835 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8532瀏覽量
136015
原文標(biāo)題:快速入門 TensorFlow.js
文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
鴻蒙OpenHarmony【標(biāo)準(zhǔn)系統(tǒng)編寫“Hello World”程序】 (基于RK3568開發(fā)板)
微雪Arduino系列教程五:Hello World
Arduino Hello World實(shí)驗(yàn)
如何下載一個(gè)簡單的Hello World示例
在Arduino上創(chuàng)建一個(gè)Hello World程序
Android開發(fā)之“hello World”的實(shí)現(xiàn)
MICROCHIP MINUTES 4 - HELLO WORLD
ZYNQ嵌入式系統(tǒng)-Hello World 實(shí)驗(yàn)
基于Nios 的 hello world
Zynq上使用Vitis的雙ARM Hello World

基本的“Hello World”示例,通過該實(shí)例開啟我們的全新旅程
評論