摘要:今年,發(fā)布了面向開發(fā)者的全新機器學(xué)習(xí)框架。今年,圍繞,谷歌同樣做出了幾項重大宣布發(fā)布新的官方博客與頻道面向開發(fā)者的全新機器學(xué)習(xí)框架發(fā)布一系列新的庫與工具例如等。提供了多種適用于張量的線性代數(shù)和機器學(xué)習(xí)運算的。
當(dāng)時時間 3 月 30 日,谷歌 TenosrFlow 開發(fā)者峰會 2018 在美國加州石景山開幕,來自全球的機器學(xué)習(xí)用戶圍繞 TensorFlow 展開技術(shù)演講與演示。去年的 TensorFlow 開發(fā)者大會上,該框架正式升級到了 1.0 版本,逐漸成為最流行的深度學(xué)習(xí)框架。今年,TensorFlow 發(fā)布了面向 JavaScript 開發(fā)者的全新機器學(xué)習(xí)框架 TensorFlow.js。
在大會上午的 Keynote 中,谷歌大腦負責(zé)人 Jeff Dean、TensorFlow 總監(jiān) Rajat Monga 等人圍繞 TensorFlow 做了表現(xiàn)、流行度等方面的介紹。
據(jù)介紹,在過去的兩年中,TensorFlow 不斷更新,不斷改善,逐漸成為社區(qū)內(nèi)更為流行的深度學(xué)習(xí)框架。下圖是從開源以來,TensorFlow 的重大更新,例如 TensorBoard、tfdata、tfkeras、Eager Execution 等。
而且據(jù)統(tǒng)計,兩年內(nèi),TensorFlow 已經(jīng)有一千一百萬下載,超過三萬的 commits,6900 以上的 pull requests,1400 多位 contributors。
今年,圍繞 TensorFlow,谷歌同樣做出了幾項重大宣布:
1. 發(fā)布新的 TensorFlow 官方博客(http://blog.tensorflow.org/)與 TensorFlow YouTube 頻道;
2. 面向 JavaScript 開發(fā)者的全新機器學(xué)習(xí)框架 TensorFlow.js;
3. 發(fā)布一系列新的庫與工具:例如 TensorFlowHub、TensorFlow Probability API、Nucleus、DeepVariant 等。
在今天的幾項重大宣布中,比較有趣的是面向 JavaScript 開發(fā)者的全新機器學(xué)習(xí)框架 TensorFlow.js。在下文中,機器之心對 TensorFlow.js 做了細致介紹:
在大會的 Keynote 中,TensorFlow 團隊表示基于網(wǎng)頁的 JavaScript 庫 TensorFlow.js 現(xiàn)在已經(jīng)能訓(xùn)練并部署機器學(xué)習(xí)模型。我們可以使用神經(jīng)網(wǎng)絡(luò)的層級 API 構(gòu)建模型,并在瀏覽器中使用 WebGL 創(chuàng)建復(fù)雜的數(shù)據(jù)可視化應(yīng)用。此外 Node.js 很快就會發(fā)布,它能為網(wǎng)站模型提供 GPU、TPU 等快速訓(xùn)練與推斷的方法。
在 TensorFlow.js 中,我們可以使用最底層的 JavaScript 線性代數(shù)庫或的 API 在瀏覽器上開發(fā)模型,也能基于瀏覽器運行已訓(xùn)練的模型。因此,它可以充分利用瀏覽器和計算機的計算資源實現(xiàn)非常多機器學(xué)習(xí)應(yīng)用。例如在網(wǎng)頁端訓(xùn)練一個模型來識別圖片或語音,訓(xùn)練一個模型以新穎的方式玩游戲或構(gòu)建一個能創(chuàng)造鋼琴音樂的神經(jīng)網(wǎng)絡(luò)等。這些新穎的模型作為案例在 TensorFlow.js 中都提供了實現(xiàn)代碼,讀者也可以跟隨教程實現(xiàn)基于瀏覽器的模型。
TensorFlow.js 項目主頁:https://js.tensorflow.org/
TensorFlow.js 的核心概念
TensorFlow.js 是一個開源的用于開發(fā)機器學(xué)習(xí)項目的 WebGL-accelerated JavaScript 庫。TensorFlow.js 可以為你提供高性能的、易于使用的機器學(xué)習(xí)構(gòu)建模塊,允許你在瀏覽器上訓(xùn)練模型,或以推斷模式運行預(yù)訓(xùn)練的模型。TensorFlow.js 不僅可以提供低級的機器學(xué)習(xí)構(gòu)建模塊,還可以提供高級的類似 Keras 的 API 來構(gòu)建神經(jīng)網(wǎng)絡(luò)。
TensorFlow.js 的安裝非常簡單,我們可以直接使用 NMP 或腳本完成構(gòu)建。它的使用也有非常多的文檔與教程,我們只需要掌握一些基本的核心概念就能快速入手這一 JS 庫。接下來,我們介紹這個庫的一些核心概念。
Tensor
TensorFlow.js 中的中心數(shù)據(jù)單元是張量(tensor):一維或多維數(shù)組。一個 Tensor 實例的 shape 屬性定義了其數(shù)組形狀(即,數(shù)組的每個維度上有多少個值)。
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 使用一個張量值來初始化。然而,和 Tensor 不一樣,它們的值是可變的。你可以用 assign 方法分配一個新的張量到一個已有的變量(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)練過程中保存和更新值。?
Operations (Ops)
Tensor 可以用于保存數(shù)據(jù),而 Operation(Op)則可用于操作數(shù)據(jù)。TensorFlow.js 提供了多種適用于張量的線性代數(shù)和機器學(xué)習(xí)運算的 Op。由于 Tensor 是不可改變的,這些 Op 不會改變它們的值,而會返回新的 Tensor。這些運算不僅包含 add、sub 和 mul 等二元運算,同時還包括 square 等一元運算:
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]]
模型和層
從概念上說,一個模型就是一個函數(shù),給定輸入之后生成所需要的輸出。
在 Tensorflow.js 有兩種創(chuàng)建模型的方式:直接使用 Op 表示模型的運算?;蛘呤褂酶呒?API tf.model 來構(gòu)建以層定義的模型,這在深度學(xué)習(xí)中是很常用的抽象形式。其實除了以上的特征,Tensorflow.js 還有一些很重要的核心概念,例如內(nèi)存管理、神經(jīng)網(wǎng)絡(luò)基本運算和訓(xùn)練過程等。但我們了解以上概念就能輕松在瀏覽器中構(gòu)建出簡單的機器學(xué)習(xí)模型,如下展示了簡單線性回歸的定義方法:
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();
? });
目前該項目還是非常新穎的應(yīng)用,我們非常容易將機器學(xué)習(xí)模型部署在網(wǎng)頁端并在用戶的瀏覽器與硬件實現(xiàn)簡單的推斷。雖然我們還不清楚實現(xiàn)的效果,但這個 JS 庫真正能訓(xùn)練并部署機器學(xué)習(xí)模型,因此機器之心也將持續(xù)關(guān)注并嘗試構(gòu)建有意思的應(yīng)用。
歡迎加入本站公開興趣群商業(yè)智能與數(shù)據(jù)分析群
興趣范圍包括各種讓數(shù)據(jù)產(chǎn)生價值的辦法,實際應(yīng)用案例分享與討論,分析工具,ETL工具,數(shù)據(jù)倉庫,數(shù)據(jù)挖掘工具,報表系統(tǒng)等全方位知識
QQ群:81035754
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/4750.html
摘要:它不僅從前端移動到后端,我們也開始看到它用于機器學(xué)習(xí)和增強現(xiàn)實,簡稱。由于其高使用率,年的現(xiàn)狀調(diào)查將其稱為采用的安全技術(shù)。機器學(xué)習(xí)框架在年的開發(fā)者峰會上,宣布了他們的機器學(xué)習(xí)框架的實現(xiàn),稱為。更高級別的用于在之上構(gòu)建機器學(xué)習(xí)模型。 2019,開發(fā)者應(yīng)該學(xué)習(xí)的16個JavaScript框架 showImg(https://segmentfault.com/img/remote/14600...
摘要:感謝像這樣的框架,使得這些數(shù)據(jù)集可以應(yīng)用于機器學(xué)習(xí)領(lǐng)域。藍點被標(biāo)記為壞球,橙點被標(biāo)記為好球標(biāo)注來自大聯(lián)盟裁判員使用構(gòu)建模型將機器學(xué)習(xí)帶入和領(lǐng)域。使用庫將預(yù)測結(jié)果呈現(xiàn)為熱圖。好球區(qū)域位于本壘板上方至英尺之間。 在這篇文章中,我們將使用TensorFlow.js,D3.js和網(wǎng)絡(luò)的力量來可視化訓(xùn)練模型的過程,以預(yù)測棒球數(shù)據(jù)中的壞球(藍色區(qū)域)和好球(橙色區(qū)域)。在整個訓(xùn)練過程中,我們將一步...
閱讀 1675·2021-10-13 09:39
閱讀 2109·2021-09-07 10:20
閱讀 2689·2019-08-30 15:56
閱讀 2957·2019-08-30 15:56
閱讀 939·2019-08-30 15:55
閱讀 637·2019-08-30 15:46
閱讀 3504·2019-08-30 15:44
閱讀 2562·2019-08-30 11:15