TensorFlow.js發布:使用JS進行機器學習並在瀏覽器中運行
TensorFlow官方團隊近日發布多個重大更新,其中包括:為python開發者提供的,可以立即評估操作並且無需額外圖形構建步驟的eager execution;可以促進機器學習模型可重用部分的發布、發現和使用的TensorFlow Hub;針對移動和嵌入式設備的輕量級解決方案TensorFlow Lite;Swift的TensorFlow開源;面向JavaScript開發者的新機器學習框架TensorFlow.js!
介紹
TensorFlow.js是為JavaScript開發者準備的開源庫,可以使用JavaScript和高級圖層API完全在瀏覽器中定義,訓練和運行機器學習模型!如果你是一名機器學習新手,那麼TensorFlow.js是開始學習的好方法。
瀏覽器內的機器學習
在瀏覽器中完全由客戶端運行的機器學習程序將會解鎖新的機會,如互動式機器學習!例如下方鏈接中的吃豆人遊戲。
https://github.com/tensorflow/tfjs-examples
使用神經網路將你的攝像頭變成PAC-MAN的控制器
如果你想嘗試其他遊戲,可以使用手機上的瀏覽器玩Emoji Scavenger Hunt。
https://emojiscavengerhunt.withgoogle.com/
項目:https://github.com/google/emoji-scavenger-hunt
從用戶的角度來看,在瀏覽器中運行的ML意味著不需要安裝任何庫或驅動程序。只需打開網頁,你的程序就可以運行了。此外,它已準備好使用GPU加速運行。TensorFlow.js自動支持WebGL,並在GPU可用時會加速代碼。用戶也可以通過移動設備打開你的網頁,在這種情況下,模型可以利用感測器數據,例如陀螺儀或加速度感測器。最後,所有數據都保留在客戶端上,使得TensorFlow.js可用於低延遲推理以及隱私保護程序。
你可以用TensorFlow.js做什麼?
如果使用TensorFlow.js進行開發,可以考慮以下三種工作流程。
- 你可以導入現有的預訓練的模型進行推理。如果你有一個現成的TensorFlow或Keras模型,則可以將其轉換為TensorFlow.js格式,並將其載入到瀏覽器中進行推理。
- 你可以導入的模型進行再訓練。就像上面的吃豆人演示一樣,你可以使用遷移學習來增強現有預訓練好的離線模型(使用在瀏覽器中收集的少量數據),使用的技術稱為圖像再訓練(Image Retraining)。這是只使用少量數據,快速訓練準確模型的一種方法。
- 直接在瀏覽器中創作模型。你還可以使用TensorFlow.js,完全在瀏覽器中使用Javascript和高級層API定義,訓練和運行模型。如果你熟悉Keras,那麼高級層API應該也會很熟悉。
讓我們看看代碼
如果你願意,可以直接到示例或教程開始。
示例:https://github.com/tensorflow/tfjs-examples
教程:http://js.tensorflow.org/
以下內容展示了如何在瀏覽器中導出用Python定義的模型進行推理,以及如何完全用Javascript定義和訓練模型。這是定義一個神經網路來對花朵進行分類的代碼片段,就像在http://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:機器學習 |