Ohjelmointi

Deeplearning4j: Syvä oppiminen ja ETL JVM: lle

Eclipse Deeplearning4j on avoimen lähdekoodin hajautettu, syvä oppimiskirjasto JVM: lle. Deeplearning4j on kirjoitettu Java-kielellä ja on yhteensopiva minkä tahansa JVM-kielen kanssa, kuten Scala, Clojure tai Kotlin. Taustalla olevat laskelmat kirjoitetaan kielillä C, C ++ ja Cuda. Keras toimii Python-sovellusliittymänä. Hadoopin ja Apache Sparkin kanssa integroitu Deeplearning4j tuo tekoälyn liiketoimintaympäristöihin käytettäväksi hajautetuissa grafiikkasuorittimissa ja suorittimissa.

Deeplearning4j on itse asiassa pino projekteja, jotka on tarkoitettu tukemaan JVM-pohjaisen syväoppimissovelluksen kaikkia tarpeita. Itse Deeplearning4j: n (korkean tason sovellusliittymä) lisäksi se sisältää ND4J: n (yleiskäyttöinen lineaarinen algebra,), SameDiffin (kaaviopohjainen automaattinen erottelu), DataVecin (ETL), Arbiterin (hyperparametrien haku) ja C ++ LibND4J: n (kaikkien tukena) yllä olevista). LibND4J vuorotellen kutsuu vakiokirjastoja CPU- ja GPU-tuille, kuten OpenBLAS, OneDNN (MKL-DNN), cuDNN ja cuBLAS.

Eclipse Deeplearning4j: n tavoitteena on tarjota ydinkomponentit rakentamiseen sovellukset jotka sisältävät tekoälyn. Tekoälyn tuotteilla yrityksessä on usein laajempi soveltamisala kuin pelkällä koneoppimisella. Jakelun yleisenä tavoitteena on tarjota älykkäitä oletuksia syvällisten oppimissovellusten rakentamiseksi.

Deeplearning4j kilpailee jossain määrin kaikkien muiden syvällisten oppimispuitteiden kanssa. Laajuuden vertailukelpoisin projekti on TensorFlow, joka on johtava tuotannon syvällinen oppimiskehys. TensorFlowlla on tällä hetkellä käyttöliittymät Pythonille, C ++: lle ja Java: lle (kokeellinen), ja erillinen toteutus JavaScriptiä varten. TensorFlow käyttää kahta tapaa harjoittaa: kaaviopohjainen ja välitön tila (innokas toteutus). Deeplearning4j tukee tällä hetkellä vain kaaviopohjaista suoritusta.

PyTorch, luultavasti johtava tutkimuksen syväoppimiskehys, tukee vain välitöntä tilaa; sillä on käyttöliittymät Pythonille, C ++: lle ja Java: lle. H2O-kuohuvesi integroi avoimen lähdekoodin H2O-hajautetun muistikoneoppimisalustan Sparkin kanssa. H2O: lla on käyttöliittymät Java- ja Scala-, Python-, R- ja H2O Flow -muistikirjoille.

Kaupallista tukea Deeplearning4j: lle voi ostaa Konduitilta, joka tukee myös monia projektissa työskenteleviä kehittäjiä.

Kuinka Deeplearning4j toimii

Deeplearning4j käsittelee tietojen lataamisen ja harjoitusalgoritmien tehtäviä erillisinä prosesseina. Lataat ja muunnat tietoja DataVec-kirjastolla ja harjoittelet malleja tensoreilla ja ND4J-kirjastolla.

Syöt tietoja a RecordReader käyttöliittymä ja käy tiedot läpi a RecordReaderDataSetIterator. Voit valita a Tietojen normalisointi luokan esiprosessorina DataSetIterator. Käytä ImagePreProcessingScaler kuvadatan osalta NormalizerMinMaxScaler jos sinulla on yhtenäinen alue kaikilla syötetietojesi ulottuvuuksilla, ja Normalizer Normoi useimmissa muissa tapauksissa. Tarvittaessa voit toteuttaa mukautetun Tietojen normalisointi luokassa.

DataSet objektit ovat säilöjä tietojen ominaisuuksille ja tarroille, ja ne säilyttävät arvot useissa tapauksissa INDArray: yksi esimerkkien ominaisuuksista, yksi tarroista ja kaksi muuta peittämiseksi, jos käytät aikasarjatietoja. Ominaisuuksien tapauksessa INDArray on koon tensori Esimerkkien lukumäärä x Ominaisuuksien lukumäärä. Jaat tiedot yleensä mini-eriin harjoittelua varten. esimerkkien lukumäärä INDArray on tarpeeksi pieni, jotta se mahtuu muistiin, mutta riittävän suuri hyvän kaltevuuden saamiseksi.

Jos tarkastelet Deeplearning4j-koodia mallien määrittelemiseksi, kuten alla oleva Java-esimerkki, huomaat, että se on erittäin korkean tason sovellusliittymä, samanlainen kuin Keras. Suunniteltu Python-käyttöliittymä Deeplearning4j: lle käyttää Kerasia; juuri nyt, jos sinulla on Keras-malli, voit tuoda sen Deeplearning4j-tiedostoon.

MultiLayerConfiguration conf =

uusi NeuralNetConfiguration.Builder ()

.optimizationAlgo (OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT)

.updater (uudet Nesterovs (learningRate, 0.9))

.lista(

uusi DenseLayer.Builder (). nIn (numInputs) .nOut (numHiddenNodes) .activation ("relu"). build (),

uusi OutputLayer.Builder (LossFunction.NEGATIVELOGLIKELIHOOD).

aktivointi ("softmax"). nIn (numHiddenNodes) .nOut (numOutputs) .build ()

) .backprop (true) .build ();

Monikerroksinen verkko luokka on yksinkertaisin verkkoasetusten sovellusliittymä, joka on saatavana Eclipse Deeplearning4j -sovelluksessa; DAG-rakenteille, käytä Laskentakaavio sen sijaan. Huomaa, että optimointialgoritmi (SGD tässä esimerkissä) määritetään erikseen päivittimestä (Nesterov tässä esimerkissä). Tässä hyvin yksinkertaisessa hermoverkossa on yksi tiheä kerros a: lla ReLU aktivointitoiminto ja yksi lähtökerros -log (todennäköisyys) menetys ja a softmax aktivointitoiminto, ja se ratkaistaan ​​takaosan etenemisellä. Myös monimutkaisemmilla verkoilla voi olla HaudatLSTM, ConvolutionLayer, UpottaminenKerrosja muut kahdesta kymmenestä tuetusta kerrostyypistä ja kuudentoista kerrostilan tyypistä.

Yksinkertaisin tapa kouluttaa mallia on kutsua .fit () menetelmä mallin kokoonpanossa DataSetIterator argumenttina. Voit myös nollata iteraattorin ja soittaa .fit () -menetelmää niin monelle aikakaudelle kuin tarvitset, tai käytä EarlyStoppingTrainer.

Testaa mallin suorituskyky käyttämällä Arviointi luokassa nähdäksesi kuinka hyvin koulutettu malli sopii testitietoihisi, jonka ei pitäisi olla sama kuin harjoitustieto.

Deeplearning4j tarjoaa kuuntelijan, jonka avulla voit seurata verkon suorituskykyä visuaalisesti. Sitä kutsutaan jokaisen minierän käsittelyn jälkeen. Yksi yleisimmin käytetyistä kuuntelijoista on ScoreIterationListener.

Deeplearning4j: n asentaminen ja testaaminen

Tällä hetkellä helpoin tapa kokeilla Deeplearning4j: tä on käyttää virallista pikakäynnistystä. Se vaatii suhteellisen tuoreen Java-version, Mavenin asennuksen, toimivan Gitin ja kopion IntelliJ IDEA: sta (ensisijainen) tai Eclipse. On myös muutama käyttäjän antama pika-aloitus. Aloita kloonaamalla eclipse / deeplearning4j-esimerkit-repo omalle koneellesi Git- tai GitHub Desktop -työkalulla. Asenna sitten projektit Mavenilla dl4j-esimerkit-kansiosta.

martinheller @ Martins-Retina-MacBook dl4j-esimerkit% mvn puhdas asennus

[TIEDOT] Etsitään projekteja ...

[VAROITUS]

[VAROITUS] Joitakin ongelmia havaittiin rakennettaessa tehokasta mallia org.deeplearning4j: dl4j-esimerkit: jar: 1.0.0-beta7

[VAROITUS] 'build.plugins.plugin. (groupId: artifactId)' on oltava yksilöllinen, mutta löydetty kaksoisilmoitus laajennuksesta org.apache.maven.plugins: maven-compiler-plugin @ line 250, column 21

[VAROITUS]

[VAROITUS] On erittäin suositeltavaa korjata nämä ongelmat, koska ne uhkaavat rakennuksesi vakautta.

[VAROITUS]

[VAROITUS] Tästä syystä tulevat Maven-versiot eivät ehkä enää tue tällaisten epämuodostuneiden projektien rakentamista.

[VAROITUS]

[TIEDOT]

[TIEDOT] ------------------< org.deeplearning4j: dl4j-esimerkkejä >------------------

[TIEDOT] Rakennuksen esittely DL4J 1.0.0-beta7: een

[TIEDOT] -------------------------------- [purkki] --------------- ------------------

Ladattu keskustasta: //repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-enforcer-plugin/1.0.1/maven-enforcer-plugin-1.0.1.pom (6,5 kt, 4,4 kB / s)

Lataus keskuksesta: //repo.maven.apache.org/maven2/org/apache/maven/enforcer/enforcer/1.0.1/enforcer-1.0.1.pom

Ladattu keskuspaikasta: //repo.maven.apache.org/maven2/org/apache/maven/enforcer/enforcer/1.0.1/enforcer-1.0.1.pom (11 kt 137 kt / s)

Lataus keskuksesta: //repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-enforcer-plugin/1.0.1/maven-enforcer-plugin-1.0.1.jar

Ladattu keskustasta: //repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-enforcer-plugin/1.0.1/maven-enforcer-plugin-1.0.1.jar (22 kB, 396 kB / s)

Lataus keskuksesta: //repo.maven.apache.org/maven2/org/codehaus/mojo/exec-maven-plugin/1.4.0/exec-maven-plugin-1.4.0.pom

Ladattu keskustasta: //repo.maven.apache.org/maven2/org/codehaus/mojo/exec-maven-plugin/1.4.0/exec-maven-plugin-1.4.0.pom (12 kt 283 kB / s)

Lataus keskuksesta: //repo.maven.apache.org/maven2/org/codehaus/mojo/exec-maven-plugin/1.4.0/exec-maven-plugin-1.4.0.jar

Ladattu keskustasta: //repo.maven.apache.org/maven2/org/codehaus/mojo/exec-maven-plugin/1.4.0/exec-maven-plugin-1.4.0.jar (46 kB, 924 kB / s)

Lataus keskuksesta: //repo.maven.apache.org/maven2/com/lewisd/lint-maven-plugin/0.0.11/lint-maven-plugin-0.0.11.pom

Ladattu keskustasta: //repo.maven.apache.org/maven2/com/lewisd/lint-maven-plugin/0.0.11/lint-maven-plugin-0.0.111.pom (19 kt 430 kB / s)

Lataus keskuksesta: //repo.maven.apache.org/maven2/com/lewisd/lint-maven-plugin/0.0.11/lint-maven-plugin-0.0.11.jar

Ladattu keskustasta: //repo.maven.apache.org/maven2/com/lewisd/lint-maven-plugin/0.0.11/lint-maven-plugin-0.0.111.jar (106 kB, 1,6 Mt / s)

Lataus keskuksesta: //repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-compiler-plugin/3.5.1/maven-compiler-plugin-3.5.1.pom

[VAROITUS] - org.agrona.kokoelmat.Hashing

[VAROITUS] - org.agrona.collections.Long2ObjectCache $ ValueIterator

[VAROITUS] - org.agrona.collections.Int2ObjectHashMap $ EntrySet

[VAROITUS] - org.agrona.concurrent.SleepingIdleStrategy

[VAROITUS] - org.agrona.collections.MutableInteger

[VAROITUS] - org.agrona.collections.Int2IntHashMap

[VAROITUS] - org.agrona.collections.IntIntConsumer

[VAROITUS] - org.agrona.concurrent.status.StatusIndicator

[VAROITUS] - 175 lisää ...

[VAROITUS] javafx-base-14-mac.jar, javafx-graphics-14-mac.jar, jakarta.xml.bind-api-2.3.2.jar määrittelee yhden päällekkäisen luokan:

[VAROITUS] - moduuli-info

[VAROITUS] protobuf-1.0.0-beta7.jar, guava-19.0.jar määrittävät 3 päällekkäistä luokkaa:

[VAROITUS] - com.google.thirdparty.publicsuffix.TrieParser

[VAROITUS] - com.google.thirdparty.publicsuffix.PublicSuffixPatterns

[VAROITUS] - com.google.thirdparty.publicsuffix.PublicSuffixType

[VAROITUS] jsr305-3.0.2.jar, guava-1.0.0-beta7.jar määrittelee 35 päällekkäistä luokkaa:

[VAROITUS] - javax.annotation.RegEx

[VAROITUS] - javax.annotation.concurrent.Immutable

[VAROITUS] - javax.annotation.meta.TypeQualifierDefault

[VAROITUS] - javax.annotation.meta.TypeQualifier

[VAROITUS] - javax.annotation.Syntax

[VAROITUS] - javax.annotation.CheckReturnValue

[VAROITUS] - javax.annotation.CheckForNull

[VAROITUS] - javax.annotation.Nonnull

[VAROITUS] - javax.annotation.meta.TypeQualifierNickname

[VAROITUS] - javax.annotation.MatchesPattern

[VAROITUS] - 25 lisää ...

[VAROITUS] maven-shadow-plugin on havainnut, että jotkut luokan tiedostot ovat

[VAROITUS] esiintyy kahdessa tai useammassa JAR: issa. Kun näin tapahtuu, vain yksi

[VAROITUS] luokan yksi versio kopioidaan uber-purkkiin.

[VAROITUS] Yleensä tämä ei ole haitallista, ja voit ohittaa nämä varoitukset,

[VAROITUS] muuten yritä sulkea artefaktit manuaalisesti

[VAROITUS] mvn riippuvuus: puu -Detail = tosi ja yllä oleva lähtö.

[VAROITUS] Katso //maven.apache.org/plugins/maven-shade-plugin/

[TIEDOT] Liitetään varjostettu esine.

[TIEDOT]

[TIEDOT] --- maven-install-plugin: 2.4: asenna (oletusasennus) @ dl4j-esimerkkejä ---

[TIEDOT] Asennetaan /Volumes/Data/repos/deeplearning4j-examples/dl4j-examples/target/dl4j-examples-1.0.0-beta7.jar osoitteeseen /Users/martinheller/.m2/repository/org/deeplearning4j/dl4j-examples/1.0 .0-beeta7 / dl4j-esimerkit-1.0.0-beeta7.jar

[TIEDOT] Asennetaan /Volumes/Data/repos/deeplearning4j-examples/dl4j-examples/pom.xml tiedostoon /Users/martinheller/.m2/repository/org/deeplearning4j/dl4j-examples/1.0.0-beta7/dl4j-examples-1.0 .0-beta7.pom

[TIEDOT] Asennetaan /Volumes/Data/repos/deeplearning4j-examples/dl4j-examples/target/dl4j-examples-1.0.0-beta7-shaded.jar tiedostoon /Users/martinheller/.m2/repository/org/deeplearning4j/dl4j-examples /1.0.0-beta7/dl4j-esimerkkejä-1.0.0-beta7-shaded.jar

[TIEDOT] ------------------------------------------------------------------------

[TIEDOT] RAKENNA MENESTYS

[TIEDOT] ------------------------------------------------------------------------

[TIEDOT] Kokonaisaika: 05:07 min

[TIEDOT] Päättynyt: 2020-07-10T10: 58: 55-04: 00

[TIEDOT] ------------------------------------------------------------------------

martinheller @ Martins-Retina-MacBook dl4j-esimerkit%

Kun asennus on valmis, avaa dl4j-esimerkit / hakemisto IntelliJ IDEA: lla ja yritä suorittaa joitain esimerkkejä.