JS神經網絡deeplearn.js:瀏覽器端機器智能框架
通過 deeplearn.js,可以實現在瀏覽器中訓練神經網絡模型,也可在推理階段運行預訓練模型。
deeplearn.js 以 TypeScript 作為首選語言,提供了可用於構建可微數據流圖的 API,以及一系列可以直接使用的數學函數。該庫有兩個 API 模型,一個是即時執行模型(可認為是 NumPy),另一個是基於 TensorFlow 的 API 鏡像的延時執行模型。該庫還支持從 TensorFlow 檢查點將權重轉儲為可以導入 deeplearn.js 的格式,但開發者必須在 deeplearn.js 中重新創建模型,並使用該檢查點的權重。
deeplearn.js 正計划建立一種可以直接從 TensorFlow 將模型端口從 GraphDef 自動傳輸到 deeplearn.js 的方法。同時該庫使用 OES_texture_float 擴展以定位支持 WebGL 1.0 和 WebGL 2.0 的設備,對於不支持 WebGL 的設備,deeplearn.js 還提出了 CPU 回退機制。
在 deeplearn.js 中,NDArray 是其核心數據單元,包括一系列浮點值,可以用於將其構建為任意維數的數組。NDArray 也擁有一個用來定義形狀的 shape 屬性。例如一個 3*2 的矩陣用法如下:
const shape = [3,2]; // 3 行,2 列 const matrix = Array2D.new(shape,[1.0,2.0,4.0,6.0,3.0,2.0]);
該庫還提供了一個 NDArrayMath 基類,定義了一系列在 NDArray 上運行的數學函數,為模型內數據操作提供方便。在 deeplearn.js 中,可微數據流圖和 TensorFlow 一樣,使用的是延遲執行模型。通過 FeedEntrys 提供的輸入 NDArray 構建一個計算圖,然后再在上面進行訓練或推斷。其中 FeedEntry 對象和 TensorFlow 中的 feed_dict 類似,用來提供運行所需的數據。
在當前深度學習的浪潮下,deeplearn.js 為瀏覽器構建了強大的交互式機器學習工具,幾乎可以被用在任何領域,包括教育、模型的理解、藝術項目等。
目前在官網上推出了 4 個 Demo:
Model Builder:可以不用編程在瀏覽器上構建神經網絡。
Webcam Imagenet:在瀏覽器上運行的 Squeezenet,可使用多種模式識別圖像中的物體。
NNArt:一個動畫顯示的 CPPN,可調節顏色等多種參數。
Benchmarks:針對該庫的一個性能測試。