0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

JavaScript也能玩機(jī)器學(xué)習(xí)—— 5個(gè)開(kāi)源 JavaScript 機(jī)器學(xué)習(xí)框架

張康康 ? 2018-10-10 13:43 ? 次閱讀

作者 | 極鏈科技Video++技術(shù)中心前端Team

整理 | 包包

3個(gè)月前,公司AI團(tuán)隊(duì)給我們分享了關(guān)于如何利用機(jī)器學(xué)習(xí)幫助我們分析圖片、視頻中的明星以及地標(biāo)等。作為一名Web的前端開(kāi)發(fā)者,我很好奇機(jī)器學(xué)習(xí)是如何工作的。我并沒(méi)計(jì)劃要系統(tǒng)學(xué)習(xí)關(guān)于機(jī)器學(xué)習(xí)(ML)、神經(jīng)網(wǎng)絡(luò)、NLP自然語(yǔ)言處理之類的知識(shí),不過(guò)光看到這些概念就覺(jué)得很有意思,簡(jiǎn)直是打開(kāi)了一個(gè)新的世界。

大多數(shù)玩機(jī)器學(xué)習(xí)的同事在工作中都是用 Python 這樣的語(yǔ)言完成的,但既然身處在 JavaScript 這個(gè)生態(tài)中,為什么不試試一起使用JavaScript機(jī)器學(xué)習(xí)呢?而且使用 JavaScript 還允許運(yùn)行在瀏覽器和服務(wù)器端、甚至是桌面程序上。通過(guò)做一些Search和研究發(fā)現(xiàn),這里的確有一些簡(jiǎn)潔的庫(kù),可以將JavaScript、機(jī)器學(xué)習(xí)、DNN甚至NLP結(jié)合在一起,而且在瀏覽器端大多庫(kù)會(huì)調(diào)用WebGL來(lái)做機(jī)器學(xué)習(xí)的計(jì)算。


1.TensorFlow.js (https://js.tensorflow.org/)

TensorFlow.js是一個(gè)開(kāi)源的基于硬件加速的 JavaScript 的庫(kù),支持在瀏覽器或者 NodeJs 中來(lái)運(yùn)行深度學(xué)習(xí),并且能支持現(xiàn)有的Tensorflow 模型,由Google出品??梢哉f(shuō)是前端深度學(xué)習(xí)框架Deeplearn.js的繼任者。它提供一系列簡(jiǎn)潔和通俗易懂的API,用于訓(xùn)練、部署模型。而且因?yàn)榭梢赃\(yùn)行在瀏覽器,所以可以直接通過(guò)URL就能分享你的程序:


通過(guò)攝像頭來(lái)控制的吃豆人游戲

2. Brain.js (https://brain.js.org/)

Brain.js是同樣可以運(yùn)行在瀏覽器和 NodeJs 服務(wù)器端、能為不同的任務(wù)提供不同類型的訓(xùn)練網(wǎng)絡(luò)。特點(diǎn)是讓定義、訓(xùn)練以及執(zhí)行神經(jīng)網(wǎng)絡(luò)變得特別簡(jiǎn)單。個(gè)人覺(jué)得這個(gè)庫(kù)比較適合入門(mén)。比如以下短短幾行代碼已涵蓋創(chuàng)建、訓(xùn)練和執(zhí)行神經(jīng)網(wǎng)絡(luò),一目了然:



Brain.js 的色彩識(shí)別器

3. Synaptic.js (http://caza.la/synaptic)

Synaptic可以運(yùn)行在瀏覽器和 NodeJs 服務(wù)器端的神經(jīng)網(wǎng)絡(luò)庫(kù),你能夠用它訓(xùn)練一層甚至是二層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。該庫(kù)包括一些內(nèi)置的體系結(jié)構(gòu),如多層感知機(jī)(MLP)長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)、液體狀態(tài)機(jī)和能夠訓(xùn)練真實(shí)網(wǎng)絡(luò)的訓(xùn)練器。


Synaptic image-filter perceptron

4. Machine learning tools (https://github.com/mljs/ml)

Machine Learning tools是由 mljs 組織開(kāi)發(fā)的一組庫(kù),可以為 JavaScript 提供機(jī)器學(xué)習(xí)工具,包括監(jiān)督和非監(jiān)督學(xué)習(xí)、人工神經(jīng)網(wǎng)絡(luò) (ANN)、回歸算法,用于統(tǒng)計(jì)、數(shù)學(xué)等的支持庫(kù),類似于 Python 中的scikit-learn。


5. compromise (http://compromise.cool/)

基本上是NLP自然語(yǔ)言處理庫(kù) - 前端 JavaScript 實(shí)現(xiàn)的首選,這個(gè)庫(kù)加上自己的資料庫(kù)壓縮成min.js后文件大小可達(dá)到300k以下,這樣運(yùn)行在瀏覽器和 NodeJs 服務(wù)器端都問(wèn)題不大,具體可以做的東西是訓(xùn)練自定義語(yǔ)義庫(kù):劃分出分詞,獲取句子的各個(gè)詞性,可以把句子變積極消極、分詞等,比如以下例子:


JavaScript 雖然不是機(jī)器學(xué)習(xí)的最佳編程語(yǔ)言,不過(guò)隨著Web生態(tài)人工智能技術(shù)近年來(lái)的不斷發(fā)展完善,越來(lái)越多這樣的機(jī)器學(xué)習(xí)工具庫(kù)被研發(fā)和發(fā)布。對(duì)于一名Web的前端開(kāi)發(fā)者而言,用 JavaScript 作為入門(mén)機(jī)器學(xué)習(xí)的橋梁是個(gè)不錯(cuò)的選擇,它同樣能幫助你開(kāi)啟機(jī)器學(xué)習(xí)之旅。

參考資料

《A Web Developer’s Guide to Machine Learning in JavaScript》


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 開(kāi)源
    +關(guān)注

    關(guān)注

    3

    文章

    3126

    瀏覽量

    42070
  • javascript
    +關(guān)注

    關(guān)注

    0

    文章

    515

    瀏覽量

    53658
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8306

    瀏覽量

    131847
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    微軟推出ONNX Runtime Web,利用WebGPU優(yōu)化瀏覽器機(jī)器學(xué)習(xí)性能

    作為微軟的 JavaScript 庫(kù),ONNX Runtime Web 使得網(wǎng)絡(luò)開(kāi)發(fā)者能在瀏覽器環(huán)境下部署機(jī)器學(xué)習(xí)模型,并提供多種硬件加速的后端支持。
    的頭像 發(fā)表于 03-05 14:23 ?765次閱讀

    javascript屬于前端嗎

    JavaScript是一種高級(jí)編程語(yǔ)言,通常用于網(wǎng)頁(yè)開(kāi)發(fā)。它是一種腳本語(yǔ)言,可用于在網(wǎng)頁(yè)上動(dòng)態(tài)交互,提供更好的用戶體驗(yàn)。JavaScript是一種廣泛使用的技術(shù),幾乎所有現(xiàn)代網(wǎng)頁(yè)都使用它來(lái)實(shí)現(xiàn)交互性
    的頭像 發(fā)表于 12-03 11:43 ?1254次閱讀

    javascript的變量中可以包含

    以下內(nèi)容: 字符串(String):JavaScript中的字符串是由零個(gè)或多個(gè)字符組成的序列??梢允褂脝我?hào)或雙引號(hào)將字符串括起來(lái)。例如: let name = "John" ; 數(shù)值(Number
    的頭像 發(fā)表于 12-03 11:34 ?612次閱讀

    JavaScript的語(yǔ)法和基本功能

    JavaScript(簡(jiǎn)稱JS)是一種常用的腳本編程語(yǔ)言,廣泛應(yīng)用于網(wǎng)頁(yè)開(kāi)發(fā)、移動(dòng)應(yīng)用開(kāi)發(fā)等領(lǐng)域。正式的JS標(biāo)準(zhǔn)由Ecma國(guó)際組織制定并維護(hù),最新的ECMAScript標(biāo)準(zhǔn)定義了JavaScript
    的頭像 發(fā)表于 12-03 11:15 ?502次閱讀

    怎樣開(kāi)啟javascript功能

    JavaScript是一種客戶端腳本語(yǔ)言,它可以在網(wǎng)頁(yè)中實(shí)現(xiàn)動(dòng)態(tài)交互和功能增強(qiáng)。在現(xiàn)代網(wǎng)頁(yè)開(kāi)發(fā)中,幾乎所有的瀏覽器都支持JavaScript,因此,開(kāi)啟JavaScript功能是很簡(jiǎn)單的。 要開(kāi)啟
    的頭像 發(fā)表于 12-03 11:13 ?3056次閱讀

    JavaScript的用途和功能

    JavaScript是一種廣泛使用的腳本語(yǔ)言,用于為網(wǎng)站添加動(dòng)態(tài)功能和交互性。從創(chuàng)建簡(jiǎn)單的交互式表單到設(shè)計(jì)復(fù)雜的網(wǎng)頁(yè)游戲,JavaScript為開(kāi)發(fā)者提供了豐富的功能和靈活的創(chuàng)作能力。它在現(xiàn)代的網(wǎng)頁(yè)
    的頭像 發(fā)表于 12-03 11:12 ?723次閱讀

    javascript指什么

    JavaScript是一種高級(jí)編程語(yǔ)言,通常用于為網(wǎng)頁(yè)添加交互功能。它是一種面向?qū)ο蟮恼Z(yǔ)言,旨在通過(guò)編寫(xiě)代碼來(lái)控制網(wǎng)頁(yè)的行為,使用戶能夠與網(wǎng)頁(yè)進(jìn)行動(dòng)態(tài)交互。JavaScript能夠與HTML和CSS
    的頭像 發(fā)表于 12-03 11:11 ?704次閱讀

    javascript運(yùn)行環(huán)境有哪些

    環(huán)境。幾乎所有的現(xiàn)代瀏覽器都支持 JavaScript,并且提供了一個(gè) JavaScript 引擎來(lái)解釋和執(zhí)行代碼。不同瀏覽器使用的引擎略有不同,如 Chrome 使用 V8 引擎,F(xiàn)irefox
    的頭像 發(fā)表于 11-27 16:11 ?2228次閱讀

    javascript:;怎么解決

    javascript:” 是一個(gè)JavaScript偽協(xié)議,它通常出現(xiàn)在URL地址欄或鏈接中,用于執(zhí)行JavaScript代碼。然而,有時(shí)它可能會(huì)導(dǎo)致一些問(wèn)題,特別是在一些不支持
    的頭像 發(fā)表于 11-26 14:39 ?6299次閱讀

    javascript深入淺出

    。它最初被設(shè)計(jì)為在瀏覽器中運(yùn)行,用于實(shí)現(xiàn)網(wǎng)頁(yè)的交互效果和動(dòng)態(tài)功能。隨著Node.js的出現(xiàn),JavaScript可以在服務(wù)器端運(yùn)行。 JavaScript基本語(yǔ)法 JavaScript
    的頭像 發(fā)表于 11-16 10:34 ?2122次閱讀

    javascript的成熟分類

    JavaScript的成熟分類可以從多個(gè)角度進(jìn)行劃分,以下是幾種常見(jiàn)的分類方式: 語(yǔ)言成熟度: 解釋型語(yǔ)言:JavaScript是一種解釋型語(yǔ)言,這意味著它不需要在編譯期間進(jìn)行預(yù)處理或編譯。 動(dòng)態(tài)
    的頭像 發(fā)表于 11-16 10:30 ?30.2w次閱讀

    javascript可以關(guān)閉嗎

    **JavaScript是一種編程語(yǔ)言,它不能被“關(guān)閉”。**JavaScript是一種客戶端腳本語(yǔ)言,它通常嵌入在HTML頁(yè)面中。當(dāng)用戶訪問(wèn)一個(gè)包含JavaScript的網(wǎng)頁(yè)時(shí),瀏覽
    的頭像 發(fā)表于 11-16 10:20 ?1086次閱讀

    javascript有什么用

    JavaScript是一種廣泛使用的編程語(yǔ)言,主要用于增強(qiáng)網(wǎng)頁(yè)和創(chuàng)建動(dòng)態(tài)網(wǎng)頁(yè)內(nèi)容。以下是JavaScript的一些主要用途: 交互性:JavaScript可以使網(wǎng)頁(yè)具有交互性。例如,當(dāng)用戶點(diǎn)擊按鈕或
    的頭像 發(fā)表于 11-16 10:19 ?804次閱讀

    javascript怎么開(kāi)啟

    : Google Chrome:點(diǎn)擊右上角的三個(gè)點(diǎn) > 設(shè)置 > 隱私和安全 > 內(nèi)容設(shè)置 > 允許(或建議)網(wǎng)站使用 JavaScript。 Mozilla Firefox:點(diǎn)擊右上角的三個(gè)橫線
    的頭像 發(fā)表于 11-16 10:16 ?1622次閱讀

    NNI:自動(dòng)幫你做機(jī)器學(xué)習(xí)調(diào)參的神器

    NNI 自動(dòng)機(jī)器學(xué)習(xí)調(diào)參,是微軟開(kāi)源的又一個(gè)神器,它能幫助你找到最好的神經(jīng)網(wǎng)絡(luò)架構(gòu)或超參數(shù),支持 各種訓(xùn)練環(huán)境 。 它常用的 使用場(chǎng)景 如下: 想要在自己的代碼、模型中試驗(yàn) 不同的
    的頭像 發(fā)表于 10-30 10:28 ?2141次閱讀
    NNI:自動(dòng)幫你做<b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b>調(diào)參的神器