摘要:項(xiàng)目可以讓你使用在驅(qū)動(dòng)的你的瀏覽器上運(yùn)行訓(xùn)練好的模型。內(nèi)核卷積本地連接噪聲備注及其限制可以與主線程分開多帶帶運(yùn)行在中。所以在多帶帶的線程中運(yùn)行的好處被必須運(yùn)行在模式中的要求抵消了。所有的測(cè)試都會(huì)自動(dòng)運(yùn)行。
項(xiàng)目可以讓你使用 WebGL 在 GPU 驅(qū)動(dòng)的、你的瀏覽器上運(yùn)行訓(xùn)練好的 Keras 模型。模型直接根據(jù) Keras JSON 格式配置文件和關(guān)聯(lián)的 HDF5 權(quán)重而序列化(serialized)。
項(xiàng)目地址:https://github.com/transcranial/keras-js
互動(dòng)演示
用于 MNIST 的基本卷積網(wǎng)絡(luò)
在 MNIST 上訓(xùn)練的卷積變自編碼器(Convolutional Variational Autoencoder)
在 ImageNet 上訓(xùn)練的 50 層的殘差網(wǎng)絡(luò)(Residual Network)
在 ImageNet 上訓(xùn)練的 Inception V3
用于 IMDB 情緒分類的雙向 LSTM
為什么要做這個(gè)項(xiàng)目?
消除對(duì)后端基礎(chǔ)設(shè)施或 API 調(diào)用的需求
完全將計(jì)算卸載到客戶端瀏覽器
互動(dòng)應(yīng)用程序
使用方法
查看 demos/src/ 獲取真實(shí)案例的源代碼。
1. 對(duì) Model 和 Sequential 都適用
model = Sequential()
model.add(...)
...
...
model = Model(input=..., output=...)
一旦訓(xùn)練完成,保存權(quán)重和導(dǎo)出模型架構(gòu)配置:
model.save_weights("model.hdf5")
with open("model.json", "w") as f:
f.write(model.to_json())
參見演示的 jupyter notebooks 了解詳情:demos/notebooks/
2. 在 HDF5 權(quán)重文件上運(yùn)行編碼器腳本:
$ python encoder.py /path/to/model.hdf5
這將在同一個(gè)文件夾中產(chǎn)生兩個(gè)用作 HDF5 權(quán)重的文件:model_weights.buf 和 model_metadata.json
3.Keras.js 所需的三個(gè)文件:
模型文件:model.json
權(quán)重文件:model_weights.buf
權(quán)重元數(shù)據(jù)文件:model_metadata.json
4.GPU 支持由 weblas(https://github.com/waylonflinn/weblas) 驅(qū)動(dòng)。將 Keras.js 和 Weblas 庫(kù)包含進(jìn)去:
5. 創(chuàng)建新模型
實(shí)例化時(shí),數(shù)據(jù)通過(guò) XHR(相同域或要求 CORS)加載,層被初始化為有向無(wú)環(huán)圖。當(dāng)這些步驟完成之后,類方法 ready() 返回一個(gè)解決問(wèn)題的 Promise。然后,使用 perdict() 讓數(shù)據(jù)通過(guò)模型,這也會(huì)返回一個(gè) Promise。
const model = new KerasJS.Model({
filepaths: {
model: "url/path/to/model.json",
weights: "url/path/to/model_weights.buf",
metadata: "url/path/to/model_metadata.json"
}
gpu: true
})
model.ready().then(() => {
// input data object keyed by names of the input layers
// or `input` for Sequential models
// values are the flattened Float32Array data
// (input tensor shapes are specified in the model config)
const inputData = {
"input_1": new Float32Array(data)
}
// make predictions
// outputData is an object keyed by names of the output layers
// or `output` for Sequential models
model.predict(inputData).then(outputData => {
// e.g.,
// outputData["fc1000"]
})
})
可用的層
高級(jí)激活: LeakyReLU, PReLU, ELU, ParametricSoftplus, ThresholdedReLU, SReLU
卷積: Convolution1D, Convolution2D, AtrousConvolution2D, SeparableConvolution2D, Deconvolution2D, Convolution3D, UpSampling1D, UpSampling2D, UpSampling3D, ZeroPadding1D, ZeroPadding2D, ZeroPadding3D
內(nèi)核: Dense, Activation, Dropout, SpatialDropout2D, SpatialDropout3D, Flatten, Reshape, Permute, RepeatVector, Merge, Highway, MaxoutDense
嵌入: Embedding
歸一化: BatchNormalization
池化: MaxPooling1D, MaxPooling2D, MaxPooling3D, AveragePooling1D, AveragePooling2D, AveragePooling3D, GlobalMaxPooling1D, GlobalAveragePooling1D, GlobalMaxPooling2D, GlobalAveragePooling2D
循環(huán): SimpleRNN, LSTM, GRU
包裝器: Bidirectional, TimeDistributed
還沒有實(shí)現(xiàn)的層
目前還不能直接實(shí)現(xiàn) Lambda,但最終會(huì)創(chuàng)建一個(gè)通過(guò) JavaScript 定義計(jì)算邏輯的機(jī)制。
內(nèi)核: Lambda
卷積: Cropping1D, Cropping2D, Cropping3D
本地連接: LocallyConnected1D, LocallyConnected2D
噪聲:GaussianNoise, GaussianDropout
備注
WebWorker 及其限制
Keras.js 可以與主線程分開多帶帶運(yùn)行在 WebWorker 中。因?yàn)?Keras.js 會(huì)執(zhí)行大量同步計(jì)算,這可以防止該 UI 受到影響。但是,WebWorker 的較大限制之一是缺乏
WebGL MAX_TEXTURE_SIZE
在 GPU 模式中,張量對(duì)象被編碼成了計(jì)算之前的 WebGL textures。這些張量的大小由 gl.getParameter(gl.MAX_TEXTURE_SIZE) 限定,這會(huì)根據(jù)硬件或平臺(tái)的狀況而有所不同。參考 http://webglstats.com/ 了解典型的預(yù)期值。在 im2col 之后,卷積層中可能會(huì)有一個(gè)問(wèn)題。比如在 Inception V3 網(wǎng)絡(luò)演示中,第一層卷積層中 im2col 創(chuàng)造了一個(gè) 22201 x 27 的矩陣,并在第二層和第三層卷積層中創(chuàng)造 21609 x 288 的矩陣。第一個(gè)維度上的大小超過(guò)了 MAX_TEXTURE_SIZE 的較大值 16384,所以必須被分割開。根據(jù)權(quán)重為每一個(gè)分割開的張量執(zhí)行矩陣乘法,然后再組合起來(lái)。在這個(gè)案例中,當(dāng) createWeblasTensor() 被調(diào)用時(shí),Tensor 對(duì)象上會(huì)提供一個(gè) weblasTensorsSplit 屬性。了解其使用的例子可查看 src/layers/convolutional/Convolution2D.js
開發(fā)/測(cè)試
對(duì)于每一個(gè)實(shí)現(xiàn)的層都存在廣泛的測(cè)試。查看 notebooks/ 獲取為所有這些測(cè)試生成數(shù)據(jù)的 jupyter notebooks。
$ npm install
要運(yùn)行所有測(cè)試,執(zhí)行 npm run server 并訪問(wèn) http://localhost:3000/test/。所有的測(cè)試都會(huì)自動(dòng)運(yùn)行。打開你的瀏覽器的開發(fā)工具獲取額外的測(cè)試數(shù)據(jù)信息。
對(duì)于開發(fā),請(qǐng)運(yùn)行:
$ npm run watch
編輯 src/ 中的任意文件都會(huì)觸發(fā) webpack 來(lái)更新 dist/keras.js。
要?jiǎng)?chuàng)建生產(chǎn)型的 UMD webpack 版本,輸出到 dist/keras.js,運(yùn)行:
$ npm run build
證書
MIT:https://github.com/transcranial/keras-js/blob/master/LICENSE
歡迎加入本站公開興趣群商業(yè)智能與數(shù)據(jù)分析群
興趣范圍包括各種讓數(shù)據(jù)產(chǎn)生價(jià)值的辦法,實(shí)際應(yīng)用案例分享與討論,分析工具,ETL工具,數(shù)據(jù)倉(cāng)庫(kù),數(shù)據(jù)挖掘工具,報(bào)表系統(tǒng)等全方位知識(shí)
QQ群:81035754
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/4410.html
摘要:第一個(gè)深度學(xué)習(xí)框架該怎么選對(duì)于初學(xué)者而言一直是個(gè)頭疼的問(wèn)題。簡(jiǎn)介和是頗受數(shù)據(jù)科學(xué)家歡迎的深度學(xué)習(xí)開源框架。就訓(xùn)練速度而言,勝過(guò)對(duì)比總結(jié)和都是深度學(xué)習(xí)框架初學(xué)者非常棒的選擇。 「第一個(gè)深度學(xué)習(xí)框架該怎么選」對(duì)于初學(xué)者而言一直是個(gè)頭疼的問(wèn)題。本文中,來(lái)自 deepsense.ai 的研究員給出了他們?cè)诟呒?jí)框架上的答案。在 Keras 與 PyTorch 的對(duì)比中,作者還給出了相同神經(jīng)網(wǎng)絡(luò)在不同框...
摘要:增強(qiáng)現(xiàn)實(shí)以下簡(jiǎn)稱浪潮正滾滾而來(lái),瀏覽器作為人們最唾手可得的人機(jī)交互終端,正在大力發(fā)展技術(shù)。目前年底前端要想實(shí)現(xiàn),都是靠的視頻透視式技術(shù)。但這兩個(gè)都是移動(dòng)的,于是谷歌的團(tuán)隊(duì)提供了和兩個(gè)庫(kù),以便開發(fā)者能用技術(shù)來(lái)基于和開發(fā),從而實(shí)現(xiàn)。 本文作者 GeekPlux,博客地址:http://geekplux.com/2018/01/18/augmented-reality-development...
摘要:在年月首次推出,現(xiàn)在用戶數(shù)量已經(jīng)突破了萬(wàn)。其中有數(shù)百人為代碼庫(kù)做出了貢獻(xiàn),更有數(shù)千人為社區(qū)做出了貢獻(xiàn)?,F(xiàn)在我們推出,它帶有一個(gè)更易使用的新,實(shí)現(xiàn)了與的直接整合。類似的,正在用實(shí)現(xiàn)份額部分規(guī)范,如。大量的傳統(tǒng)度量和損失函數(shù)已被移除。 Keras 在 2015 年 3 月首次推出,現(xiàn)在用戶數(shù)量已經(jīng)突破了 10 萬(wàn)。其中有數(shù)百人為 Keras 代碼庫(kù)做出了貢獻(xiàn),更有數(shù)千人為 Keras 社區(qū)做出了...
摘要:前言作為一名在本科期間做過(guò)前端,研究生期間研究了深度學(xué)習(xí),目前是一名前端開發(fā)工程師的我,應(yīng)該說(shuō)一下我作為前端開發(fā)工程師在人工智能浪潮里該做些什么。 前言 作為一名在本科期間做過(guò)前端,研究生期間研究了深度學(xué)習(xí),目前是一名前端開發(fā)工程師的我,應(yīng)該說(shuō)一下我作為前端開發(fā)工程師在人工智能浪潮里該做些什么。 如何看待人工智能 本人是深度學(xué)習(xí)方向探索過(guò)三年的研究生,在老師的洗腦下對(duì)深度學(xué)習(xí)和整個(gè)人工...
閱讀 3032·2023-04-25 20:22
閱讀 3345·2019-08-30 11:14
閱讀 2599·2019-08-29 13:03
閱讀 3187·2019-08-26 13:47
閱讀 3230·2019-08-26 10:22
閱讀 1276·2019-08-23 18:26
閱讀 622·2019-08-23 17:16
閱讀 1919·2019-08-23 17:01