摘要:今年,發(fā)布了面向開(kāi)發(fā)者的全新機(jī)器學(xué)習(xí)框架。今年,圍繞,谷歌同樣做出了幾項(xiàng)重大宣布發(fā)布新的官方博客與頻道面向開(kāi)發(fā)者的全新機(jī)器學(xué)習(xí)框架發(fā)布一系列新的庫(kù)與工具例如等。提供了多種適用于張量的線性代數(shù)和機(jī)器學(xué)習(xí)運(yùn)算的。
當(dāng)時(shí)時(shí)間 3 月 30 日,谷歌 TenosrFlow 開(kāi)發(fā)者峰會(huì) 2018 在美國(guó)加州石景山開(kāi)幕,來(lái)自全球的機(jī)器學(xué)習(xí)用戶(hù)圍繞 TensorFlow 展開(kāi)技術(shù)演講與演示。去年的 TensorFlow 開(kāi)發(fā)者大會(huì)上,該框架正式升級(jí)到了 1.0 版本,逐漸成為最流行的深度學(xué)習(xí)框架。今年,TensorFlow 發(fā)布了面向 JavaScript 開(kāi)發(fā)者的全新機(jī)器學(xué)習(xí)框架 TensorFlow.js。
在大會(huì)上午的 Keynote 中,谷歌大腦負(fù)責(zé)人 Jeff Dean、TensorFlow 總監(jiān) Rajat Monga 等人圍繞 TensorFlow 做了表現(xiàn)、流行度等方面的介紹。
據(jù)介紹,在過(guò)去的兩年中,TensorFlow 不斷更新,不斷改善,逐漸成為社區(qū)內(nèi)更為流行的深度學(xué)習(xí)框架。下圖是從開(kāi)源以來(lái),TensorFlow 的重大更新,例如 TensorBoard、tfdata、tfkeras、Eager Execution 等。
而且據(jù)統(tǒng)計(jì),兩年內(nèi),TensorFlow 已經(jīng)有一千一百萬(wàn)下載,超過(guò)三萬(wàn)的 commits,6900 以上的 pull requests,1400 多位 contributors。
今年,圍繞 TensorFlow,谷歌同樣做出了幾項(xiàng)重大宣布:
1. 發(fā)布新的 TensorFlow 官方博客(http://blog.tensorflow.org/)與 TensorFlow YouTube 頻道;
2. 面向 JavaScript 開(kāi)發(fā)者的全新機(jī)器學(xué)習(xí)框架 TensorFlow.js;
3. 發(fā)布一系列新的庫(kù)與工具:例如 TensorFlowHub、TensorFlow Probability API、Nucleus、DeepVariant 等。
在今天的幾項(xiàng)重大宣布中,比較有趣的是面向 JavaScript 開(kāi)發(fā)者的全新機(jī)器學(xué)習(xí)框架 TensorFlow.js。在下文中,機(jī)器之心對(duì) TensorFlow.js 做了細(xì)致介紹:
在大會(huì)的 Keynote 中,TensorFlow 團(tuán)隊(duì)表示基于網(wǎng)頁(yè)的 JavaScript 庫(kù) TensorFlow.js 現(xiàn)在已經(jīng)能訓(xùn)練并部署機(jī)器學(xué)習(xí)模型。我們可以使用神經(jīng)網(wǎng)絡(luò)的層級(jí) API 構(gòu)建模型,并在瀏覽器中使用 WebGL 創(chuàng)建復(fù)雜的數(shù)據(jù)可視化應(yīng)用。此外 Node.js 很快就會(huì)發(fā)布,它能為網(wǎng)站模型提供 GPU、TPU 等快速訓(xùn)練與推斷的方法。
在 TensorFlow.js 中,我們可以使用最底層的 JavaScript 線性代數(shù)庫(kù)或的 API 在瀏覽器上開(kāi)發(fā)模型,也能基于瀏覽器運(yùn)行已訓(xùn)練的模型。因此,它可以充分利用瀏覽器和計(jì)算機(jī)的計(jì)算資源實(shí)現(xiàn)非常多機(jī)器學(xué)習(xí)應(yīng)用。例如在網(wǎng)頁(yè)端訓(xùn)練一個(gè)模型來(lái)識(shí)別圖片或語(yǔ)音,訓(xùn)練一個(gè)模型以新穎的方式玩游戲或構(gòu)建一個(gè)能創(chuàng)造鋼琴音樂(lè)的神經(jīng)網(wǎng)絡(luò)等。這些新穎的模型作為案例在 TensorFlow.js 中都提供了實(shí)現(xiàn)代碼,讀者也可以跟隨教程實(shí)現(xiàn)基于瀏覽器的模型。
TensorFlow.js 項(xiàng)目主頁(yè):https://js.tensorflow.org/
TensorFlow.js 的核心概念
TensorFlow.js 是一個(gè)開(kāi)源的用于開(kāi)發(fā)機(jī)器學(xué)習(xí)項(xiàng)目的 WebGL-accelerated JavaScript 庫(kù)。TensorFlow.js 可以為你提供高性能的、易于使用的機(jī)器學(xué)習(xí)構(gòu)建模塊,允許你在瀏覽器上訓(xùn)練模型,或以推斷模式運(yùn)行預(yù)訓(xùn)練的模型。TensorFlow.js 不僅可以提供低級(jí)的機(jī)器學(xué)習(xí)構(gòu)建模塊,還可以提供高級(jí)的類(lèi)似 Keras 的 API 來(lái)構(gòu)建神經(jīng)網(wǎng)絡(luò)。
TensorFlow.js 的安裝非常簡(jiǎn)單,我們可以直接使用 NMP 或腳本完成構(gòu)建。它的使用也有非常多的文檔與教程,我們只需要掌握一些基本的核心概念就能快速入手這一 JS 庫(kù)。接下來(lái),我們介紹這個(gè)庫(kù)的一些核心概念。
Tensor
TensorFlow.js 中的中心數(shù)據(jù)單元是張量(tensor):一維或多維數(shù)組。一個(gè) Tensor 實(shí)例的 shape 屬性定義了其數(shù)組形狀(即,數(shù)組的每個(gè)維度上有多少個(gè)值)。
Tensor 主要構(gòu)造函數(shù)是 tf.tensor 函數(shù):
// 2x3 Tensor
const shape = [2, 3]; // 2 rows, 3 columns
const a = tf.tensor([1.0, 2.0, 3.0, 10.0, 20.0, 30.0], shape);
a.print(); // print Tensor values
// Output: [[1 , 2 , 3 ],
// ? ? ? ? ?[10, 20, 30]]
// The shape can also be inferred:
const b = tf.tensor([[1.0, 2.0, 3.0], [10.0, 20.0, 30.0]]);
b.print();
// Output: [[1 , 2 , 3 ],
// ? ? ? ? ?[10, 20, 30]]
Variable
Variable 使用一個(gè)張量值來(lái)初始化。然而,和 Tensor 不一樣,它們的值是可變的。你可以用 assign 方法分配一個(gè)新的張量到一個(gè)已有的變量(variable):
const initialValues = tf.zeros([5]);
const biases = tf.variable(initialValues); // initialize biases
biases.print(); // output: [0, 0, 0, 0, 0]
const updatedValues = tf.tensor1d([0, 1, 0, 1, 0]);
biases.assign(updatedValues); // update values of biases
biases.print(); // output: [0, 1, 0, 1, 0]
Variable 主要用于在模型訓(xùn)練過(guò)程中保存和更新值。?
Operations (Ops)
Tensor 可以用于保存數(shù)據(jù),而 Operation(Op)則可用于操作數(shù)據(jù)。TensorFlow.js 提供了多種適用于張量的線性代數(shù)和機(jī)器學(xué)習(xí)運(yùn)算的 Op。由于 Tensor 是不可改變的,這些 Op 不會(huì)改變它們的值,而會(huì)返回新的 Tensor。這些運(yùn)算不僅包含 add、sub 和 mul 等二元運(yùn)算,同時(shí)還包括 square 等一元運(yùn)算:
const e = tf.tensor2d([[1.0, 2.0], [3.0, 4.0]]);
const f = tf.tensor2d([[5.0, 6.0], [7.0, 8.0]]);
const e_plus_f = e.add(f);
e_plus_f.print();
// Output: [[6 , 8 ],
// ? ? ? ? ?[10, 12]]
const d = tf.tensor2d([[1.0, 2.0], [3.0, 4.0]]);
const d_squared = d.square();
d_squared.print();
// Output: [[1, 4 ],
// ? ? ? ? ?[9, 16]]
模型和層
從概念上說(shuō),一個(gè)模型就是一個(gè)函數(shù),給定輸入之后生成所需要的輸出。
在 Tensorflow.js 有兩種創(chuàng)建模型的方式:直接使用 Op 表示模型的運(yùn)算?;蛘呤褂酶呒?jí) API tf.model 來(lái)構(gòu)建以層定義的模型,這在深度學(xué)習(xí)中是很常用的抽象形式。其實(shí)除了以上的特征,Tensorflow.js 還有一些很重要的核心概念,例如內(nèi)存管理、神經(jīng)網(wǎng)絡(luò)基本運(yùn)算和訓(xùn)練過(guò)程等。但我們了解以上概念就能輕松在瀏覽器中構(gòu)建出簡(jiǎn)單的機(jī)器學(xué)習(xí)模型,如下展示了簡(jiǎn)單線性回歸的定義方法:
import * as tf from "@tensorflow/tfjs";
? // Define a model for linear regression.
? const model = tf.sequential();
? model.add(tf.layers.dense({units: 1, inputShape: [1]}));
? // Prepare the model for training: Specify the loss and the optimizer.
? model.compile({loss: "meanSquaredError", optimizer: "sgd"});
? // Generate some synthetic data for training.
? const xs = tf.tensor2d([1, 2, 3, 4], [4, 1]);
? const ys = tf.tensor2d([1, 3, 5, 7], [4, 1]);
? // Train the model using the data.
? model.fit(xs, ys).then(() => {
? ? // Use the model to do inference on a data point the model hasn"t seen before:
? ? model.predict(tf.tensor2d([5], [1, 1])).print();
? });
目前該項(xiàng)目還是非常新穎的應(yīng)用,我們非常容易將機(jī)器學(xué)習(xí)模型部署在網(wǎng)頁(yè)端并在用戶(hù)的瀏覽器與硬件實(shí)現(xiàn)簡(jiǎn)單的推斷。雖然我們還不清楚實(shí)現(xiàn)的效果,但這個(gè) JS 庫(kù)真正能訓(xùn)練并部署機(jī)器學(xué)習(xí)模型,因此機(jī)器之心也將持續(xù)關(guān)注并嘗試構(gòu)建有意思的應(yīng)用。
歡迎加入本站公開(kāi)興趣群商業(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://www.ezyhdfw.cn/yun/4750.html
摘要:它不僅從前端移動(dòng)到后端,我們也開(kāi)始看到它用于機(jī)器學(xué)習(xí)和增強(qiáng)現(xiàn)實(shí),簡(jiǎn)稱(chēng)。由于其高使用率,年的現(xiàn)狀調(diào)查將其稱(chēng)為采用的安全技術(shù)。機(jī)器學(xué)習(xí)框架在年的開(kāi)發(fā)者峰會(huì)上,宣布了他們的機(jī)器學(xué)習(xí)框架的實(shí)現(xiàn),稱(chēng)為。更高級(jí)別的用于在之上構(gòu)建機(jī)器學(xué)習(xí)模型。 2019,開(kāi)發(fā)者應(yīng)該學(xué)習(xí)的16個(gè)JavaScript框架 showImg(https://segmentfault.com/img/remote/14600...
摘要:感謝像這樣的框架,使得這些數(shù)據(jù)集可以應(yīng)用于機(jī)器學(xué)習(xí)領(lǐng)域。藍(lán)點(diǎn)被標(biāo)記為壞球,橙點(diǎn)被標(biāo)記為好球標(biāo)注來(lái)自大聯(lián)盟裁判員使用構(gòu)建模型將機(jī)器學(xué)習(xí)帶入和領(lǐng)域。使用庫(kù)將預(yù)測(cè)結(jié)果呈現(xiàn)為熱圖。好球區(qū)域位于本壘板上方至英尺之間。 在這篇文章中,我們將使用TensorFlow.js,D3.js和網(wǎng)絡(luò)的力量來(lái)可視化訓(xùn)練模型的過(guò)程,以預(yù)測(cè)棒球數(shù)據(jù)中的壞球(藍(lán)色區(qū)域)和好球(橙色區(qū)域)。在整個(gè)訓(xùn)練過(guò)程中,我們將一步...
閱讀 1749·2021-10-13 09:39
閱讀 2179·2021-09-07 10:20
閱讀 2787·2019-08-30 15:56
閱讀 3056·2019-08-30 15:56
閱讀 1007·2019-08-30 15:55
閱讀 791·2019-08-30 15:46
閱讀 3564·2019-08-30 15:44
閱讀 2636·2019-08-30 11:15