自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Deeplearning4j:JVM 的深度學(xué)習(xí)和 ETL

人工智能 深度學(xué)習(xí)
Deeplearning4j 旨在將模型與 Java 應(yīng)用程序集成,提供了一組組件,用于構(gòu)建包含 AI 的基于 JVM 的應(yīng)用程序。

 [[410828]]

本文轉(zhuǎn)載自微信公眾號(hào)「Java架構(gòu)大仙」,作者Java架構(gòu)大仙。轉(zhuǎn)載本文請(qǐng)聯(lián)系Java架構(gòu)大仙公眾號(hào)。

Deeplearning4j 旨在將模型與 Java 應(yīng)用程序集成,提供了一組組件,用于構(gòu)建包含 AI 的基于 JVM 的應(yīng)用程序。

Eclipse Deeplearning4j是一個(gè)用于 JVM 的開源分布式深度學(xué)習(xí)庫(kù)。Deeplearning4j 是用 Java 編寫的,與任何 JVM 語言兼容,例如Scala、Clojure 或Kotlin。底層計(jì)算是用 C、C++ 和Cuda 編寫的。Keras將用作 Python API。Deeplearning4j與 Hadoop 和Apache Spark集成,將 AI 帶入業(yè)務(wù)環(huán)境,以在分布式 GPU 和 CPU 上使用。

Deeplearning4j實(shí)際上是一堆項(xiàng)目,旨在支持基于 JVM 的深度學(xué)習(xí)應(yīng)用程序的所有需求。除了 Deeplearning4j 本身(高級(jí) API),它還包括ND4J(通用線性代數(shù))、SameDiff(基于圖的自動(dòng)微分)、DataVec (ETL)、Arbiter(超參數(shù)搜索)和C++ LibND4J(支持所有上述的)。LibND4J 反過來調(diào)用標(biāo)準(zhǔn)庫(kù)來支持 CPU 和 GPU,例如OpenBLAS、OneDNN (MKL-DNN)、cuDNN和cuBLAS。

Eclipse Deeplearning4j 的目標(biāo)是為構(gòu)建包含 AI 的應(yīng)用程序提供一組核心組件。企業(yè)內(nèi)的 AI 產(chǎn)品通常具有比機(jī)器學(xué)習(xí)更廣泛的范圍。該發(fā)行版的總體目標(biāo)是為構(gòu)建深度學(xué)習(xí)應(yīng)用程序提供智能默認(rèn)值。

Deeplearning4j 在某種程度上與其他所有深度學(xué)習(xí)框架競(jìng)爭(zhēng)。范圍內(nèi)最具可比性的項(xiàng)目是TensorFlow,它是領(lǐng)先的端到端深度學(xué)習(xí)生產(chǎn)框架。TensorFlow 目前有 Python、C++ 和 Java(實(shí)驗(yàn)性)的接口,以及 JavaScript 的單獨(dú)實(shí)現(xiàn)。TensorFlow 使用兩種訓(xùn)練方式:基于圖和立即模式(eager execution)。Deeplearning4j 目前僅支持基于圖的執(zhí)行。

PyTorch,可能是領(lǐng)先的深度學(xué)習(xí)研究框架,只支持即時(shí)模式;它有 Python、C++ 和 Java 的接口。H2O Sparkling Water 將 H2O 開源分布式內(nèi)存機(jī)器學(xué)習(xí)平臺(tái)與 Spark 集成。H2O 具有 Java 和 Scala、Python、R 和 H2O Flow 筆記本的接口。

Deeplearning4j 的商業(yè)支持可以從Konduit購(gòu)買,它也支持許多從事該項(xiàng)目的開發(fā)人員。

Deeplearning4j 的工作原理

Deeplearning4j 將加載數(shù)據(jù)和訓(xùn)練算法的任務(wù)視為單獨(dú)的過程。您使用 DataVec 庫(kù)加載和轉(zhuǎn)換數(shù)據(jù),并使用張量和 ND4J 庫(kù)訓(xùn)練模型。

您通過RecordReader接口攝取數(shù)據(jù),并使用RecordReaderDataSetIterator. 您可以選擇一個(gè)DataNormalization類作為您的DataSetIterator. 使用ImagePreProcessingScaler圖像數(shù)據(jù)時(shí),NormalizerMinMaxScaler如果沿輸入數(shù)據(jù)的所有尺寸的均勻范圍,NormalizerStandardize對(duì)于其他大多數(shù)情況下。如有必要,您可以實(shí)現(xiàn)自定義DataNormalization類。

DataSet對(duì)象是數(shù)據(jù)特征和標(biāo)簽的容器,并將值保存在以下幾個(gè)實(shí)例中INDArray:一個(gè)用于示例的特征,一個(gè)用于標(biāo)簽,另外兩個(gè)用于屏蔽(如果您使用的是時(shí)間序列數(shù)據(jù))。在特征的情況下,INDArray是大小為 的張量Number of Examples x Number of Features。通常,您會(huì)將數(shù)據(jù)分成小批量進(jìn)行訓(xùn)練;an 中的示例數(shù)量INDArray小到足以放入內(nèi)存,但大到足以獲得良好的梯度。

如果您查看用于定義模型的 Deeplearning4j 代碼,例如下面的 Java 示例,您會(huì)發(fā)現(xiàn)它是一個(gè)非常高級(jí)的 API,類似于 Keras。事實(shí)上,Deeplearning4j 的計(jì)劃 Python 接口將使用 Keras;現(xiàn)在,如果您有 Keras 模型,則可以將其導(dǎo)入 Deeplearning4j。

  1. MultiLayerConfiguration conf =新的NeuralNetConfiguration 。建造者() 。optimizationAlgo (OptimizationAlgorithm 。STOCHASTIC_GRADIENT_DESCENT )。更新程序(新Nesterovs (learningRate ,0.9 ))。列表(新DenseLayer 。生成器()。n在(numInputs )。NOUT (numHiddenNodes )。激活(“RELU” )。 
  2.                        
  3.          
  4.              構(gòu)建(),新的輸出層。生成器(LossFunction . NEGATIVELOGLIKELIHOOD )。激活(“softmax” )。n在(numHiddenNodes )。nOut ( numOutputs )。構(gòu)建() )。反向傳播(真)。構(gòu)建(); 
  5.               
  6.  
  7.          

該MultiLayerNetwork班可在Eclipse Deeplearning4j最簡(jiǎn)單的網(wǎng)絡(luò)配置的API; 對(duì)于 DAG 結(jié)構(gòu),請(qǐng)ComputationGraph改用 。請(qǐng)注意,優(yōu)化算法(本例中的 SGD)與更新器(本例中的 Nesterov)是分開指定的。這個(gè)非常簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)有一個(gè)帶有ReLU激活函數(shù)的密集層和一個(gè)帶有-log(likelihood)損失和softmax激活函數(shù)的輸出層,并通過反向傳播解決。更復(fù)雜的網(wǎng)絡(luò)也可能具有GravesLSTM、ConvolutionLayer、EmbeddingLayer和其他支持的兩打?qū)宇愋秃褪鶎涌臻g類型。

訓(xùn)練模型的最簡(jiǎn)單方法是.fit()使用您DataSetIterator的參數(shù)調(diào)用模型配置上的方法。您還可以重置迭代器并根據(jù)需要在任意.fit()多個(gè)時(shí)期內(nèi)調(diào)用該方法,或者使用EarlyStoppingTrainer.

要測(cè)試模型性能,請(qǐng)使用一個(gè)Evaluation類來查看訓(xùn)練模型與測(cè)試數(shù)據(jù)的擬合程度,這些數(shù)據(jù)不應(yīng)與訓(xùn)練數(shù)據(jù)相同。

Deeplearning4j 提供了一個(gè)偵聽器工具,可幫助您直觀地監(jiān)控網(wǎng)絡(luò)的性能,它將在每個(gè)小批量處理后調(diào)用。最常用的偵聽器之一是ScoreIterationListener.

安裝和測(cè)試 Deeplearning4j

目前,試用 Deeplearning4j 的最簡(jiǎn)單方法是使用官方快速入門。它需要相對(duì)較新的 Java 版本、Maven 的安裝、工作的 Git 以及 IntelliJ IDEA(首選)或 Eclipse 的副本。還有一些用戶提供的快速入門。首先使用 Git 或 GitHub Desktop 將 eclipse/deeplearning4j-examples 存儲(chǔ)庫(kù)克隆到您自己的機(jī)器上。然后從 dl4j-examples 文件夾使用 Maven 安裝項(xiàng)目。

  1. martinheller @馬丁斯-視網(wǎng)膜-的MacBook dl4j -實(shí)例%MVN全新安裝 
  2. [ INFO ]掃描的項(xiàng)目... [ WARNING ] [ WARNING ]部分中遇到的問題,同時(shí)建立有效的模式進(jìn)行組織。deeplearning4j :dl4j -實(shí)例:罐子:1.0 。0 - beta7 [警告]   
  3.  
  4.   
  5.  'build.plugins.plugin.(groupId:artifactId)'必須是唯一的,但發(fā)現(xiàn)插件 org 的重復(fù)聲明。阿帕奇。行家。插件:行家-編譯-插件@行250 ,列21  
  6. [ WARNING ]  
  7. [ WARNING ]這是強(qiáng)烈推薦,因?yàn)樗麄兺{到你構(gòu)建的穩(wěn)定性,解決這些問題。[ WARNING ] [ WARNING ]對(duì)于這個(gè)原因,未來   
  8.  
  9.   Maven的版本可能不會(huì)再支持建立這種畸形的項(xiàng)目。 
  10. [警告]  
  11. [信息]  
  12. [信息] ------------------<組織。deeplearning4j : dl4j - examples >----------------- [信息] DL4J 1.0 的構(gòu)建簡(jiǎn)介。0 - beta7 [ INFO ] --------------------------------[ jar ]--------- ------------------------下載自    
  13.    
  14.   
  15.  中央:https ://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-enforcer-plugin/1.0.1/maven-enforcer-plugin-1.0.1.pom從中央 
  16. 下載:https : //repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-enforcer-plugin/1.0.1/maven-enforcer-plugin-1.0.1.pom (6.5 kB at 4.4 kB/s )從中央下載:https : //repo.maven.apache.org/maven2/org/apache/maven/enforcer/enforcer/1.0.1/enforcer-1.0.1.pom從中央下載:https :  
  17.   
  18.  //repo.maven.apache.org/maven2/org/apache/maven/enforcer/enforcer/1.0.1/enforcer-1.0.1.pom (11 kB at 137 kB/s)從中央 
  19. 下載: https : // repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-enforcer-plugin/1.0.1/maven-enforcer-plugin-1.0.1.jar從中央下載:https ://repo.maven .apache.org/maven2/org/apache/maven/plugins/maven-enforcer-plugin/1.0.1/maven-enforcer-plugin-1.0.1.jar (22 kB at 396 kB/s)從中央下載:https : //repo.maven.apache.org/maven2/org/codehaus/mojo/exec-maven-plugin/1.4.0/exec-maven-plugin-1.4.0.pom  
  20.   
  21.   
  22. 從中央下載:https : //repo.maven.apache.org/maven2/org/codehaus/mojo/exec-maven-plugin/1.4.0/exec-maven-plugin-1.4.0.pom (12 kB at 283 kB/s)從中央下載:https : //repo.maven.apache.org/maven2/org/codehaus/mojo/exec-maven-plugin/1.4.0/exec-maven-plugin-1.4.0.jar 已下載來自中央:https ://repo.maven.apache.org/maven2/org/codehaus/mojo/exec-maven-plugin/1.4.0/exec-maven-plugin-1.4.0.jar(46 kB at 924 kB /s)從中央下載:https : 
  23.   
  24.   
  25.  //repo.maven.apache.org/maven2/com/lewisd/lint-maven-plugin/0.0.11/lint-maven-plugin-0.0.11.pom從中央 
  26. 下載:https ://repo.maven.apache .org/maven2/com/lewisd/lint-maven-plugin/0.0.11/lint-maven-plugin-0.0.11.pom(19 kB at 430 kB/s)從中央下載:https ://repo.maven .apache.org/maven2/com/lewisd/lint-maven-plugin/0.0.11/lint-maven-plugin-0.0.11.jar從中央下載:https ://repo.maven.apache.org/maven2/ com/lewisd/lint-maven-plugin/0.0.11/lint-maven-plugin-0.0.11.jar (106 kB at 1.6 MB/s)從中央下載  
  27.   
  28.   
  29.  : https : //repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-compiler-plugin/3.5.1/maven-compiler-plugin-3.5.1.pom  
  30.  
  31. ...  
  32.  
  33. [警告] - org . agrona 。收藏品。散列[警告] - org 。agrona 。收藏品。Long2ObjectCache$ValueIterator [警告] -組織。agrona 。收藏品。Int2ObjectHashMap$EntrySet [警告] -    
  34.     
  35.     
  36.    組織。agrona 。并發(fā)。SleepingIdleStrategy  
  37. [警告] - org 。agrona 。收藏品。MutableInteger [警告] - org 。agrona 。收藏品。Int2IntHashMap [警告] - org 。agrona 。收藏品。IntIntConsumer 【警告】-組織。agrona 。同時(shí)    
  38.     
  39.     
  40.    . 狀態(tài)。StatusIndicator  
  41. [警告] - 175更多... [警告] javafx - base - 14 - mac 。jar 、javafx - graphics - 14 - mac 。罐子,雅加達(dá)。XML 。綁定- API - 2.3 。2.jar定義1 個(gè)重疊類:[警告]     
  42.  
  43.    -模塊-信息[ WARNING ]的protobuf - 1.0 。0 - β7的。罐子,番石榴- 19.0 。罐限定3重疊的類:[ WARNING ] - COM 。谷歌。第三方。公共后綴。TrieParser [警告] - com 。谷歌。第三方。公共后綴。 
  44.  
  45.     
  46.    PublicSuffixPatterns  
  47. [警告] - com 。谷歌。第三方。公共后綴。PublicSuffixType [ WARNING ] JSR305 - 3.0 。2.jar ,番石榴- 1.0 。0 - β7的。罐限定35重疊的類:[ WARNING ] -的javax 。注釋。正則表達(dá)式[警告] - javax    
  48.  
  49.     
  50.    . 注釋。并發(fā)。不可變 
  51. [警告] - javax 。注釋。元。TypeQualifierDefault [警告] - javax 。注釋。元。TypeQualifier [警告] - javax 。注釋。語法[警告] - javax 。注釋。檢查返回值[警告]    
  52.     
  53.     
  54.     
  55.    - javax 。注釋。CheckForNull  
  56. [警告] - javax 。注釋。非空[警告] - javax 。注釋。元。TypeQualifierNickname [警告] - javax 。注釋。MatchesPattern [警告] - 還有25個(gè)...... [警告] maven -陰影-    
  57.     
  58.     
  59.      
  60. 插件檢測(cè)到某些類文件 
  61. [警告]存在于兩個(gè)或多個(gè)JAR 中。當(dāng)這種情況發(fā)生,只有一個(gè)[ WARNING ]單一的版本類被復(fù)制到超級(jí)罐子?!揪妗客ǔ_@是不是有害的,并可以跳過這些警告,[警告] ,否則試圖基于手動(dòng)排除假象   
  62.   
  63.      
  64.  
  65. [警告] mvn 依賴項(xiàng):tree - Ddetail = true和上面的輸出。[警告]參見HTTP ://maven.apache.org/plugins/maven-shade-plugin/ [ INFO ] 。附接陰影偽影。[ INFO ] [ INFO ] --- Maven的-安裝-插件:2.4 :安裝(默認(rèn)-安裝) @  
  66.   
  67.   
  68.  
  69.    dl4j -實(shí)例--- [ INFO ]安裝/體積/數(shù)據(jù)/回購(gòu)/ deeplearning4j -實(shí)例/ dl4j -實(shí)例/目標(biāo)/ dl4j -實(shí)例- 1.0 。0 - β7的。jar 到/ Users / martinheller /。m2 /存儲(chǔ)庫(kù)/組織/ deeplearning4j / dl4j -  
  70.   實(shí)例/ 1.0 。0 -聯(lián)蛋白β7 / dl4j -實(shí)例- 1.0 。0 - β7的。jar  
  71. [信息]安裝/卷/數(shù)據(jù)/ repos / deeplearning4j - examples / dl4j - examples / pom 。xml 到/ Users / martinheller /。m2 /存儲(chǔ)庫(kù)/組織/  deeplearning4j / dl4j -示例/ 1.0 . 0 -聯(lián)蛋白β7 / dl4j -實(shí)例- 1.0 。0 - β7的。POM  
  72. [ INFO ]安裝/體積/數(shù)據(jù)/回購(gòu)/ deeplearning4j -實(shí)例/ dl4j -實(shí)例/目標(biāo)/ dl4j -實(shí)例- 1.0 。0 -  beta7 -陰影。jar 到/ Users / martinheller /。m2 / repository / org / deeplearning4j / dl4j - examples / 1.0 。0 -聯(lián)蛋白β7 / dl4j -實(shí)例- 1.0 。0 - β7的-陰影。jar  
  73. [信息] ---------------------------------------------- -------------------------- [信息]  
  74.  構(gòu)建成功 
  75. [信息] --------------------------------------------- --------------------------- [ INFO ]總時(shí)間: 05 : 07 min [ INFO ]完成時(shí)間: 2020 - 07 - 10T10 : 58 : 55 - 04 : 00 [信息] ----------------------------------------- ------------------------------- martinheller@Martins - Retina - MacBook dl4j  
  76.     
  77.    
  78.   
  79. -例子% 

安裝完成后,使用 IntelliJ IDEA 打開 dl4j-examples/ 目錄并嘗試運(yùn)行一些示例。

dl4j-examples 下的 README 列出了所有示例并對(duì)其進(jìn)行了簡(jiǎn)要說明。順便說一句,您可以使用 IntelliJ IDEA 首選項(xiàng)安裝新版本的 JDK 并將其應(yīng)用于項(xiàng)目。

著名的鳶尾花數(shù)據(jù)集只有 150 個(gè)樣本,通常很容易建模,盡管其中一些鳶尾花經(jīng)常被錯(cuò)誤分類。這里使用的模型是三層密集神經(jīng)網(wǎng)絡(luò)。

運(yùn)行上圖所示的 Iris 分類器會(huì)產(chǎn)生相當(dāng)好的擬合:準(zhǔn)確率、精確度、召回率和 F1 分?jǐn)?shù)都約為 98%。請(qǐng)注意,在混淆矩陣中,只有一個(gè)測(cè)試用例被錯(cuò)誤分類。

線性分類器演示在幾秒鐘內(nèi)運(yùn)行,并為訓(xùn)練和測(cè)試數(shù)據(jù)集生成概率圖。數(shù)據(jù)是專門為線性可分為兩類而生成的。

MNIST 手寫數(shù)字?jǐn)?shù)據(jù)集的多層感知器 (MLP) 分類模型在大約 14K 次迭代后產(chǎn)生了約 97% 的準(zhǔn)確度、精確度、召回率和 F1 分?jǐn)?shù)。這不如卷積神經(jīng)網(wǎng)絡(luò)(如 LeNet)在該數(shù)據(jù)集上的結(jié)果好或快。

Deeplearning4j 性能

對(duì) Java 程序進(jìn)行基準(zhǔn)測(cè)試可能很棘手。特別是,您需要在對(duì)代碼進(jìn)行計(jì)時(shí)之前對(duì)其進(jìn)行預(yù)熱以消除 JIT 編譯器的開銷,并且您需要確保 JVM 具有足夠的 RAM 配置用于進(jìn)行基準(zhǔn)測(cè)試的程序。Deeplearning4j 社區(qū)為各種流行的模型和配置維護(hù)了一個(gè)基準(zhǔn)代碼存儲(chǔ)庫(kù)。

據(jù)開發(fā)人員稱,Deeplearning4j 在使用多個(gè) GPU 的非平凡圖像識(shí)別任務(wù)中與 Caffe 一樣快。要使用多臺(tái)機(jī)器,您可以使用 Spark 運(yùn)行 Deeplearning4j

Java 應(yīng)用程序的深度學(xué)習(xí)

總的來說,Deeplearning4j 是一個(gè)很有價(jià)值的庫(kù),用于加載和調(diào)節(jié)數(shù)據(jù)以及在 Java VM 上執(zhí)行深度學(xué)習(xí)。雖然尚未像 TensorFlow 或 PyTorch 那樣成熟,但 Deeplearning4j 將吸引希望將深度學(xué)習(xí)模型集成到基于 Java 的應(yīng)用程序中的數(shù)據(jù)科學(xué)家。Deeplearning4j 能夠?qū)?Keras 模型,這將簡(jiǎn)化想要從 TensorFlow 轉(zhuǎn)換的人的過渡。

Deeplearning4j 支持創(chuàng)建圖形然后運(yùn)行它們,就像TensorFlow 1 一樣。它不支持即時(shí)模式訓(xùn)練,如 TensorFlow 2 和 PyTorch。這對(duì)生產(chǎn)來說并不重要,但它可能會(huì)使使用 Deeplearning4j 對(duì)研究的吸引力降低。

Deeplearning4j 目前有兩種分布式訓(xùn)練機(jī)制,參數(shù)平均和梯度共享。后者更可取,但它僅在版本 1.0.0-beta3 中添加到庫(kù)中。Deeplearning4j 還與 Spark 集成,這有助于支持在一組機(jī)器上進(jìn)行訓(xùn)練。在具有多個(gè) GPU 的單個(gè)服務(wù)器上進(jìn)行訓(xùn)練時(shí),使用 Spark 并沒有真正的幫助。

 

責(zé)任編輯:武曉燕 來源: Java架構(gòu)大仙
相關(guān)推薦

2022-03-25 13:42:15

Log4j漏洞網(wǎng)絡(luò)安全

2017-10-31 10:11:04

深度學(xué)習(xí)服務(wù)器DeepLearnin

2010-09-29 10:41:18

J2MEJVM

2023-11-10 10:08:23

2017-08-12 13:23:43

深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)推理加速

2017-12-01 15:24:04

TensorFlow深度學(xué)習(xí)教程

2017-03-22 20:36:34

深度學(xué)習(xí)機(jī)器學(xué)習(xí)人工智能

2009-06-19 17:03:44

J2EE學(xué)習(xí)

2020-11-03 14:31:55

Ai人工智能深度學(xué)習(xí)

2021-03-01 11:39:34

機(jī)器學(xué)習(xí)深度學(xué)習(xí)人工智能

2021-01-29 15:10:32

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

2022-07-11 09:00:00

數(shù)據(jù)集成云計(jì)算ELT

2024-02-19 10:25:34

深度學(xué)習(xí)人工智能AI

2018-04-26 13:41:57

深度學(xué)習(xí)人工智能機(jī)器學(xué)習(xí)

2022-03-25 10:35:20

機(jī)器學(xué)習(xí)深度學(xué)習(xí)強(qiáng)化學(xué)習(xí)

2011-04-13 09:30:28

dom4j

2016-10-21 13:10:18

javalog4jslf4j

2020-05-28 15:35:07

人工智能

2021-12-01 22:55:45

人工智能機(jī)器學(xué)習(xí)深度學(xué)習(xí)

2009-01-19 13:35:57

ETLEAI數(shù)據(jù)倉(cāng)庫(kù)
點(diǎn)贊
收藏

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