標籤:

TensorFlow.js發布:使用JS進行機器學習並在瀏覽器中運行

TensorFlow官方團隊近日發布多個重大更新,其中包括:為python開發者提供的,可以立即評估操作並且無需額外圖形構建步驟的eager execution;可以促進機器學習模型可重用部分的發布、發現和使用的TensorFlow Hub;針對移動和嵌入式設備的輕量級解決方案TensorFlow Lite;Swift的TensorFlow開源;面向JavaScript開發者的新機器學習框架TensorFlow.js!

介紹

TensorFlow.js是為JavaScript開發者準備的開源庫,可以使用JavaScript和高級圖層API完全在瀏覽器中定義,訓練和運行機器學習模型!如果你是一名機器學習新手,那麼TensorFlow.js是開始學習的好方法。

瀏覽器內的機器學習

在瀏覽器中完全由客戶端運行的機器學習程序將會解鎖新的機會,如互動式機器學習!例如下方鏈接中的吃豆人遊戲。

github.com/tensorflow/t

使用神經網路將你的攝像頭變成PAC-MAN的控制器

如果你想嘗試其他遊戲,可以使用手機上的瀏覽器玩Emoji Scavenger Hunt。

emojiscavengerhunt.withgoogle.com

項目:github.com/google/emoji

從用戶的角度來看,在瀏覽器中運行的ML意味著不需要安裝任何庫或驅動程序。只需打開網頁,你的程序就可以運行了。此外,它已準備好使用GPU加速運行。TensorFlow.js自動支持WebGL,並在GPU可用時會加速代碼。用戶也可以通過移動設備打開你的網頁,在這種情況下,模型可以利用感測器數據,例如陀螺儀或加速度感測器。最後,所有數據都保留在客戶端上,使得TensorFlow.js可用於低延遲推理以及隱私保護程序。

你可以用TensorFlow.js做什麼?

如果使用TensorFlow.js進行開發,可以考慮以下三種工作流程。

  • 你可以導入現有的預訓練的模型進行推理。如果你有一個現成的TensorFlow或Keras模型,則可以將其轉換為TensorFlow.js格式,並將其載入到瀏覽器中進行推理。
  • 你可以導入的模型進行再訓練。就像上面的吃豆人演示一樣,你可以使用遷移學習來增強現有預訓練好的離線模型(使用在瀏覽器中收集的少量數據),使用的技術稱為圖像再訓練(Image Retraining)。這是只使用少量數據,快速訓練準確模型的一種方法。
  • 直接在瀏覽器中創作模型。你還可以使用TensorFlow.js,完全在瀏覽器中使用Javascript和高級層API定義,訓練和運行模型。如果你熟悉Keras,那麼高級層API應該也會很熟悉。

讓我們看看代碼

如果你願意,可以直接到示例或教程開始。

示例:github.com/tensorflow/t

教程:js.tensorflow.org/

以下內容展示了如何在瀏覽器中導出用Python定義的模型進行推理,以及如何完全用Javascript定義和訓練模型。這是定義一個神經網路來對花朵進行分類的代碼片段,就像在TensorFlow.org的入門指南中一樣(也就是說分類鳶尾花)。在這裡我使用一堆層定義一個模型。

1import * as tffrom 『@tensorflow/tfjs』;

2const model= tf.sequential();

3model.add(tf.layers.dense({inputShape: [4], units:100}));

4model.add(tf.layers.dense({units:4}));

5model.compile({loss: 『categoricalCrossentropy』, optimizer: 『sgd』});

我們在此使用的層API支持在示例目錄中能找到的所有Keras層(包括Dense,CNN,LSTM等)。然後,我們可以使用與方法調用相同的 Keras-compatible API來訓練我們的模型:

1await model.fit(

2 xData, yData, {

3 batchSize: batchSize,

4 epochs: epochs

5});

這個模型現在可以用來做預測了:

01// Get measurementsfor a new flower to generate a prediction

02// The first argumentis the data,and the secondis the shape.

03const inputData= tf.tensor2d([[4.8,3.0,1.4,0.1]], [1,4]);

04

05// Get the highest confidence predictionfrom our model

06const result= model.predict(inputData);

07const winner= irisClasses[result.argMax().dataSync()[0]];

08

09// Display the winner

10console.log(winner);

TensorFlow.js還包含底層API(以前稱為deeplearn.js)並支持Eager execution。

TensorFlow.js API

TensorFlow.js如何與deeplearn.js關聯?

TensorFlow.js屬於JavaScript生態系統,實現其進行機器學習的工具,繼承自deeplearn.js(即TensorFlow.js Core)。TensorFlow.js還包含一個Layers API,它是使用Core構建機器學習模型的高級庫,並且也是用於自動移植TensorFlow SavedModels和Keras hdf5模型的工具。

本文為編譯作品,轉載請註明出處。更多內容關注微信公眾號:atyun_com

推薦閱讀:

《集異璧》作者侯世達瘋狂吐槽谷歌翻譯,AI讓譯者失業?還早著呢!
【頂級資源】掌握線性代數為機器學習打下堅實基礎!
MLer必知的8個神經網路架構
經驗風險最小化
吳恩達機器學習第一周課後感

TAG:機器學習 |