偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

如何在瀏覽器中使用TensorFlow?

譯文
人工智能 深度學(xué)習(xí)
充分利用TensorFlow.js,用JavaScript開發(fā)和訓(xùn)練機(jī)器學(xué)習(xí)模型,并部署在瀏覽器中或Node.js上。

[[341102]]

【51CTO.com快譯】雖然您可以借助TensorFlow用數(shù)量較少的訓(xùn)練數(shù)據(jù)來訓(xùn)練簡單的神經(jīng)網(wǎng)絡(luò),但對于擁有龐大訓(xùn)練數(shù)據(jù)集的深度神經(jīng)網(wǎng)絡(luò)而言,確實(shí)需要使用具有CUDA功能的英偉達(dá)GPU、谷歌TPU或FPGA進(jìn)行加速。就在不久前,替代方法一直是在CPU集群上訓(xùn)練數(shù)周。

TensorFlow 2.0引入的創(chuàng)新之一是JavaScript實(shí)現(xiàn):TensorFlow.js。我沒料到這會加快訓(xùn)練或推理速度,但確實(shí)如此,它通過WebGL API支持所有的GPU(不僅僅支持具有CUDA功能的GPU)。

TensorFlow.js簡介

TensorFlow.js是一個庫,用于使用JavaScript開發(fā)和訓(xùn)練機(jī)器學(xué)習(xí)模型,并將其部署在瀏覽器中或Node.js上。您可以使用現(xiàn)有模型、轉(zhuǎn)換Python TensorFlow模型、使用遷移學(xué)習(xí)用您自己的數(shù)據(jù)重新訓(xùn)練現(xiàn)有模型以及從頭開始開發(fā)模型。

TensorFlow.js后端

TensorFlow.js支持多個后端來執(zhí)行,不過每次只有一個后端處于活躍狀態(tài)。TensorFlow.js Node.js環(huán)境支持使用Python/C TensorFlow的安裝版本作為后端,TensorFlow反過來可能使用機(jī)器可用的硬件加速技術(shù),比如CUDA。還有面向Node.js的基于JavaScript的后端,但功能有限。

在瀏覽器中,TensorFlow.js有幾個特點(diǎn)不一的后端。WebGL后端使用面向存儲的WebGL紋理和面向執(zhí)行的WebGL著色器提供GPU支持,速度比普通CPU后端最多快100倍。 WebGL不需要CUDA,因此它可以充分利用現(xiàn)有的任何GPU。

瀏覽器版的WebAssembly(WASM)TensorFlow.js后端使用XNNPACK庫來優(yōu)化神經(jīng)網(wǎng)絡(luò)operator的CPU實(shí)現(xiàn)。WASM后端通常比JavaScript CPU后端快得多(快10倍至30倍),但除了超小模型外,通常比WebGL后端要慢。您的實(shí)際情況可能有所不同,因此請?jiān)谀约旱挠布厢槍ψ约旱哪P蜏y試WASM后端和WebGL后端。

TensorFlow.js模型和層

TensorFlow.js支持用于構(gòu)建神經(jīng)網(wǎng)絡(luò)模型的兩個API。一個是Layers API,與TensorFlow 2中的Keras API實(shí)際上一樣。另一個是Core API,它實(shí)際上直接操縱張量(tensor)。

與Keras一樣,TensorFlow.js Layers API有兩種創(chuàng)建模型的方法:順序型和功能型。順序型API是層的線性堆棧,通過層列表(如下所示)或model.add()方法來實(shí)現(xiàn): 

  1. const model = tf.sequential({ 
  2.  
  3. layers: [ 
  4.  
  5. tf.layers.dense({inputShape: [784], units: 32, activation: 'relu'}), 
  6.  
  7. tf.layers.dense({units: 10, activation: 'softmax'}), 
  8.  
  9.  
  10. });  

功能型API使用tf.model() API,可創(chuàng)建任意的有向無環(huán)圖(DAG)網(wǎng)絡(luò): 

  1. // Create an arbitrary graph of layers, by connecting them 
  2.  
  3. // via the apply() method. 
  4.  
  5. const input = tf.input({shape: [784]}); 
  6.  
  7. const dense1 = tf.layers.dense({units: 32, activation: 'relu'}).apply(input); 
  8.  
  9. const dense2 = tf.layers.dense({units: 10, activation: 'softmax'}).apply(dense1); 
  10.  
  11. const model = tf.model({inputs: input, outputs: dense2});  

Core API可使用不同的代碼實(shí)現(xiàn)同樣的目的,但與層之間沒有簡單直觀的聯(lián)系。以下的模型貌似基本的張量操作,但它創(chuàng)建與前兩個公式一樣的網(wǎng)絡(luò)。注意下面model()函數(shù)中使用的relu()和softmax(),這兩個都是神經(jīng)網(wǎng)絡(luò)操作。 

  1. // The weights and biases for the two dense layers. 
  2.  
  3. const w1 = tf.variable(tf.randomNormal([784, 32])); 
  4.  
  5. const b1 = tf.variable(tf.randomNormal([32])); 
  6.  
  7. const w2 = tf.variable(tf.randomNormal([32, 10])); 
  8.  
  9. const b2 = tf.variable(tf.randomNormal([10])); 
  10.  
  11. function model(x) { 
  12.  
  13. return x.matMul(w1).add(b1).relu().matMul(w2).add(b2).softmax(); 
  14.  
  15.  

預(yù)構(gòu)建的TensorFlow.js模型

存儲庫中記載了十多個預(yù)構(gòu)建的TensorFlow.js模型,它們托管在NPM(用于Node.js中)和unpkg(用于瀏覽器中)上。您可以使用所提供的這些模型或用于遷移學(xué)習(xí)。稍花點(diǎn)精力,您還可以將它們用作構(gòu)建其他模型的模塊。

其中一些模型實(shí)時使用設(shè)備的攝像頭,比如手姿勢:

圖1. 手姿勢可以檢測手掌,并跟蹤手骨骼手指。

以下列表介紹了大多數(shù)預(yù)包裝的TensorFlow.js模型,便于索引。

  • 圖像分類
  • 對象檢測
  • 身體分割
  • 姿勢估計(jì)
  • 文本毒性檢測
  • 通用句子編碼器
  • 語音命令識別
  • KNN分類器
  • 簡單人臉檢測
  • 語義分割
  • 人臉標(biāo)志檢測
  • 手姿勢檢測
  • 自然語言問答
  • ml5.js簡介

ml5.js是主要在紐約大學(xué)開發(fā)的一種對用戶友好的開源高級TensorFlow.js接口。ml5.js可在瀏覽器中立即訪問預(yù)訓(xùn)練的模型,以檢測人體姿勢、生成文本、用另一種樣式設(shè)置圖像、創(chuàng)作音樂、音高檢測和常用英語單詞關(guān)系等。TensorFlow.js主要針對數(shù)據(jù)科學(xué)家和開發(fā)人員,ml5.js則旨在支持公眾更廣泛地了解機(jī)器學(xué)習(xí)。

ml5.js中的大多數(shù)示例依賴TensorFlow.js模型。它們已包裝成網(wǎng)頁,您可以按原樣運(yùn)行或編輯它們,比如使用不同的圖像。

 

圖2. PoseNet可以在瀏覽器中根據(jù)圖像或視頻源執(zhí)行實(shí)時姿勢估計(jì)。

將Python TensorFlow模型轉(zhuǎn)換成JavaScript

TensorFlow.js存儲庫的一部分含有用于所保存的TensorFlow和Keras模型的轉(zhuǎn)換器。它支持三種格式:SavedModel(TensorFlow的默認(rèn)格式)、HDF5(Keras的默認(rèn)格式)和TensorFlow Hub。您可以將該轉(zhuǎn)換器用于標(biāo)準(zhǔn)存儲庫中的保存模型、自己訓(xùn)練的模型以及在別處找到的模型。

轉(zhuǎn)換實(shí)際上有兩個步驟。第一步是將現(xiàn)有模型轉(zhuǎn)換成model.json和二進(jìn)制權(quán)重文件。第二步是使用API​​將模型加載到TensorFlow.js中:使用面向轉(zhuǎn)換后的TensorFlow和TensorFlow Hub模型的tf.loadGraphModel,或者使用面向轉(zhuǎn)換后的Keras模型的tf.loadLayersModel。

使用遷移學(xué)習(xí)

TensorFlow.js支持遷移學(xué)習(xí),支持方式實(shí)際上與TensorFlow一樣。說明文檔給出了幾個示例,用于為您自己的圖像定制MobileNet,以及為您自己的聲音類定制語音命令識別模型。實(shí)際上,您在這每一個代碼實(shí)驗(yàn)室中所做的就是在訓(xùn)練后的模型上添加一個小小的自定義分類器,并對其進(jìn)行訓(xùn)練。

總體而言,TensorFlow能做的,TensorFlow.js基本上都能做。然而,鑒于TensorFlow.js的目標(biāo)環(huán)境(面向游戲的普通GPU)通常比常常用于TensorFlow深度學(xué)習(xí)訓(xùn)練的龐大英偉達(dá)服務(wù)器GPU擁有較少的GPU內(nèi)存,您可能不得不縮減模型的大小,以便在瀏覽器中運(yùn)行。轉(zhuǎn)換實(shí)用程序可以為您完成這部分工作,但是您要手動取出層,并縮減訓(xùn)練的批處理大小。

原文標(biāo)題:How to use TensorFlow in your browser,作者:Martin Heller

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】

 

責(zé)任編輯:龐桂玉 來源: 51CTO
相關(guān)推薦

2022-10-13 14:28:40

Brave瀏覽器畫中畫

2022-02-16 20:36:30

瀏覽器PythonJavaScript

2019-07-23 10:22:11

TensorFlow.Python機(jī)器學(xué)習(xí)

2011-05-18 09:30:40

Linux瀏覽器

2022-05-10 09:12:16

TypeScript裝飾器

2022-09-16 07:33:52

瀏覽器深色模式Firefox

2016-08-03 15:21:03

UbuntuLinux易用性

2022-07-07 07:22:01

瀏覽器JavaScript工具

2021-10-13 14:53:50

UbuntuVivaldi瀏覽器

2021-11-29 14:38:45

FedoraLinuxBrave瀏覽器

2022-11-08 11:39:34

Web瀏覽器深色模式

2020-11-25 09:47:11

FedoraGoogle Chro瀏覽器

2009-03-05 09:37:19

2023-08-24 10:24:54

GitLabPodman

2024-10-17 08:36:31

2017-02-08 14:30:08

Chrome密碼瀏覽器

2017-02-16 19:09:56

Kali LinuxGoogle Chro瀏覽器

2020-11-30 11:55:07

Docker命令Linux

2014-07-02 09:47:06

SwiftCocoaPods

2019-09-16 19:00:48

Linux變量
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號