TensorFlow官方團隊近日發(fā)布多個重大更新,其中包括:為python開發(fā)者提供的谦絮,可以立即評估操作并且無需額外圖形構(gòu)建步驟的eager execution题诵;可以促進機器學習模型可重用部分的發(fā)布、發(fā)現(xiàn)和使用的TensorFlow Hub挨稿;針對移動和嵌入式設備的輕量級解決方案TensorFlow Lite仇轻;Swift的TensorFlow開源;面向JavaScript開發(fā)者的新機器學習框架TensorFlow.js奶甘!
介紹
TensorFlow.js是為JavaScript開發(fā)者準備的開源庫篷店,可以使用JavaScript和高級圖層API完全在瀏覽器中定義,訓練和運行機器學習模型臭家!如果你是一名機器學習新手疲陕,那么TensorFlow.js是開始學習的好方法。
瀏覽器內(nèi)的機器學習
在瀏覽器中完全由客戶端運行的機器學習程序?qū)怄i新的機會钉赁,如交互式機器學習蹄殃!例如下方鏈接中的吃豆人游戲。
https://github.com/tensorflow/tfjs-examples
使用神經(jīng)網(wǎng)絡將你的攝像頭變成PAC-MAN的控制器
如果你想嘗試其他游戲你踩,可以使用手機上的瀏覽器玩Emoji Scavenger Hunt诅岩。
https://emojiscavengerhunt.withgoogle.com/
項目:https://github.com/google/emoji-scavenger-hunt
從用戶的角度來看,在瀏覽器中運行的ML意味著不需要安裝任何庫或驅(qū)動程序带膜。只需打開網(wǎng)頁吩谦,你的程序就可以運行了。此外膝藕,它已準備好使用GPU加速運行式廷。TensorFlow.js自動支持WebGL,并在GPU可用時會加速代碼芭挽。用戶也可以通過移動設備打開你的網(wǎng)頁滑废,在這種情況下,模型可以利用傳感器數(shù)據(jù)袜爪,例如陀螺儀或加速度傳感器蠕趁。最后,所有數(shù)據(jù)都保留在客戶端上辛馆,使得TensorFlow.js可用于低延遲推理以及隱私保護程序妻导。
你可以用TensorFlow.js做什么?
如果使用TensorFlow.js進行開發(fā)怀各,可以考慮以下三種工作流程倔韭。
你可以導入現(xiàn)有的預訓練的模型進行推理。如果你有一個現(xiàn)成的TensorFlow或Keras模型瓢对,則可以將其轉(zhuǎn)換為TensorFlow.js格式寿酌,并將其加載到瀏覽器中進行推理。
你可以導入的模型進行再訓練硕蛹。就像上面的吃豆人演示一樣醇疼,你可以使用遷移學習來增強現(xiàn)有預訓練好的離線模型(使用在瀏覽器中收集的少量數(shù)據(jù)),使用的技術(shù)稱為圖像再訓練(Image Retraining)法焰。這是只使用少量數(shù)據(jù)秧荆,快速訓練準確模型的一種方法。
直接在瀏覽器中創(chuàng)作模型埃仪。你還可以使用TensorFlow.js乙濒,完全在瀏覽器中使用Javascript和高級層API定義,訓練和運行模型卵蛉。如果你熟悉Keras颁股,那么高級層API應該也會很熟悉。
讓我們看看代碼
如果你愿意傻丝,可以直接到示例或教程開始甘有。
示例:https://github.com/tensorflow/tfjs-examples
教程:http://js.tensorflow.org/
以下內(nèi)容展示了如何在瀏覽器中導出用Python定義的模型進行推理,以及如何完全用Javascript定義和訓練模型葡缰。這是定義一個神經(jīng)網(wǎng)絡來對花朵進行分類的代碼片段亏掀,就像在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等)胁澳。然后该互,我們可以使用與方法調(diào)用相同的 Keras-compatible API來訓練我們的模型:
1await model.fit(
2??xData, yData, {
3????batchSize: batchSize,
4????epochs: epochs
5});
這個模型現(xiàn)在可以用來做預測了:
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關聯(lián)韭畸?
TensorFlow.js屬于JavaScript生態(tài)系統(tǒng)宇智,實現(xiàn)其進行機器學習的工具,繼承自deeplearn.js(即TensorFlow.js Core)胰丁。TensorFlow.js還包含一個Layers API随橘,它是使用Core構(gòu)建機器學習模型的高級庫,并且也是用于自動移植TensorFlow SavedModels和Keras hdf5模型的工具锦庸。
本文為編譯作品机蔗,轉(zhuǎn)載請注明出處。