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定義和訓練模型。這是定義一個神經網絡來對花朵進行分類的代碼片段,就像在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模型的工具。
本文為編譯作品,轉載請注明出處。