Programmēšana

Deeplearning4j: padziļināta mācīšanās un ETL JVM

Eclipse Deeplearning4j ir JVM atvērtā koda, izplatīta, padziļināta mācību bibliotēka. Deeplearning4j ir rakstīts Java valodā un ir saderīgs ar jebkuru JVM valodu, piemēram, Scala, Clojure vai Kotlin. Bāzes aprēķini ir rakstīti C, C ++ un Cuda. Keras kalpos kā Python API. Integrēts ar Hadoop un Apache Spark, Deeplearning4j nodrošina AI uzņēmējdarbības vidē, lai to izmantotu izplatītajos GPU un procesoros.

Deeplearning4j faktiski ir kaudze projektu, kas paredzēti, lai atbalstītu visas JVM balstītas dziļo mācību lietojumprogrammas vajadzības. Papildus pašam Deeplearning4j (augsta līmeņa API) tas ietver ND4J (vispārējas nozīmes lineārā algebra,), SameDiff (automātiskā diferenciācija uz diagrammas pamata), DataVec (ETL), Arbiter (hiperparametru meklēšana) un C ++ LibND4J (visu pamatā ir no iepriekš minētā). LibND4J savukārt izsauc standarta bibliotēkas CPU un GPU atbalstam, piemēram, OpenBLAS, OneDNN (MKL-DNN), cuDNN un cuBLAS.

Eclipse Deeplearning4j mērķis ir nodrošināt galveno komponentu komplektu celtniecībai lietojumprogrammas kas ietver AI. AI produktiem uzņēmumā bieži ir plašāka darbības joma nekā tikai mašīnmācīšanās. Izplatīšanas vispārējais mērķis ir nodrošināt gudrus noklusējumus dziļu mācību lietojumprogrammu veidošanai.

Deeplearning4j kādā līmenī sacenšas ar katru citu dziļu mācību sistēmu. Apjoma ziņā vis salīdzināmākais projekts ir TensorFlow, kas ir vadošā visaptverošā dziļā apmācības sistēma ražošanai. TensorFlow pašlaik ir saskarnes Python, C ++ un Java (eksperimentāls), kā arī atsevišķa Java ieviešana. TensorFlow izmanto divus treniņu veidus: uz grafiku balstītu un tūlītēju režīmu (labprāt izpilde). Pašlaik Deeplearning4j atbalsta tikai uz diagrammām balstītu izpildi.

PyTorch, iespējams, vadošais dziļo mācību ietvars pētniecībai, atbalsta tikai tūlītēju režīmu; tam ir saskarnes Python, C ++ un Java. H2O dzirkstošais ūdens integrē atvērtā koda H2O izplatīto atmiņas mašīnu mācību platformu ar Spark. H2O ir saskarnes Java un Scala, Python, R un H2O Flow piezīmjdatoriem.

Komerciālu atbalstu Deeplearning4j var iegādāties vietnē Konduit, kas atbalsta arī daudzus izstrādātājus, kas strādā pie projekta.

Kā darbojas Deeplearning4j

Deeplearning4j datu apstrādes un apmācības algoritmu uzdevumus uzskata par atsevišķiem procesiem. Jūs ielādējat un pārveidojat datus, izmantojot DataVec bibliotēku, un apmācāt modeļus, izmantojot tenorus un ND4J bibliotēku.

Jūs uzņemat datus, izmantojot a RecordReader saskarni un iziet datus, izmantojot a RecordReaderDataSetIterator. Jūs varat izvēlēties a Datu normalizēšana klasē, lai to izmantotu kā priekšapstrādātāju jūsu DataSetIterator. Izmantojiet ImagePreProcessingScaler attēlu datiem - NormalizerMinMaxScaler - ja visiem ievades datu izmēriem ir vienāds diapazons, un Standartizēt vairumā citu gadījumu. Ja nepieciešams, varat ieviest pasūtījumu Datu normalizēšana klasē.

Datu kopa objekti ir konteineri jūsu datu funkcijām un etiķetēm, un vērtības saglabā vairākos gadījumos INDArray: viens jūsu piemēru funkcijām, viens etiķetēm un divi papildu maskēšanai, ja izmantojat laika rindu datus. Pazīmju gadījumā INDArray ir izmēra tenzors Piemēri x Funkciju skaits. Apmācībai jūs datus parasti sadalīsit sīkpartijās; piemēru skaits INDArray ir pietiekami mazs, lai ietilptu atmiņā, bet pietiekami liels, lai iegūtu labu gradientu.

Apskatot Deeplearning4j kodu modeļu definēšanai, piemēram, zemāk redzamo Java piemēru, redzēsiet, ka tas ir ļoti augsta līmeņa API, līdzīgs Keras. Faktiski paredzētajā Python saskarnē Deeplearning4j tiks izmantots Keras; šobrīd, ja jums ir Keras modelis, varat to importēt vietnē Deeplearning4j.

MultiLayerConfiguration conf =

jauns NeuralNetConfiguration.Builder ()

.optimizationAlgo (OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT)

.updater (jaunais Nesterovs (learningRate, 0.9))

.list (

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

jauns OutputLayer.Builder (LossFunction.NEGATIVELOGLIKELIHOOD).

aktivizēšana ("softmax"). nIn (numHiddenNodes) .nOut (numOutputs) .build ()

) .backprop (true) .build ();

The Daudzslāņu tīkls klase ir vienkāršākā tīkla konfigurācijas API, kas pieejama vietnē Eclipse Deeplearning4j; DAG struktūrām izmantojiet ComputationGraph tā vietā. Ņemiet vērā, ka optimizācijas algoritms (šajā piemērā SGD) tiek norādīts atsevišķi no atjauninātāja (šajā piemērā Nesterovs). Šim ļoti vienkāršajam neironu tīklam ir viens blīvs slānis ar a ReLU aktivizācijas funkcija un viens izvades slānis ar -log (iespējamība) zaudējums un a softmax aktivizācijas funkciju, un to atrisina ar pavairošanu aizmugurē. Var būt arī sarežģītāki tīkli KapiLSTM, ConvolutionLayer, EmbeddingLayerun citi no diviem desmitiem atbalstīto slāņu tipu un sešpadsmit slāņu vietas tipu.

Vienkāršākais veids, kā apmācīt modeli, ir izsaukt .fit () metodi modeļa konfigurācijā ar DataSetIterator kā arguments. Varat arī atiestatīt iteratoru un izsaukt .fit () metodi tik daudz laikmetu, cik jums nepieciešams, vai izmantojiet EarlyStoppingTrainer.

Lai pārbaudītu modeļa veiktspēju, izmantojiet Novērtēšana klasē, lai redzētu, cik labi apmācītais modelis atbilst jūsu testa datiem, kuriem nevajadzētu būt vienādiem ar apmācības datiem.

Deeplearning4j nodrošina klausītāja iespēju, kas palīdz vizuāli pārraudzīt tīkla veiktspēju, kas tiks izsaukta pēc katras mini partijas apstrādes. Viens no visbiežāk izmantotajiem klausītājiem ir ScoreIterationListener.

Deeplearning4j instalēšana un testēšana

Pašlaik vienkāršākais veids, kā izmēģināt Deeplearning4j, ir izmantot oficiālo ātro sākumu. Tam nepieciešama salīdzinoši nesena Java versija, Maven instalēšana, strādājošs Git un IntelliJ IDEA (vēlams) vai Eclipse kopija. Ir arī daži lietotāju veiktie ātrie sākumi. Sāciet ar klonēšanu ar aptumsumu / deeplearning4j-piemēriem savā datorā, izmantojot Git vai GitHub Desktop. Pēc tam instalējiet projektus ar Maven no mapes dl4j-piemēri.

martinheller @ Martins-Retina-MacBook dl4j-piemēri% mvn tīra instalēšana

[INFO] Notiek projektu meklēšana ...

[BRĪDINĀJUMS]

[BRĪDINĀJUMS] Veidojot efektīvu modeli org.deeplearning4j: dl4j-piemēri: jar: 1.0.0-beta7, radās dažas problēmas.

[BRĪDINĀJUMS] 'build.plugins.plugin. (groupId: artifactId)' ir jābūt unikālam, taču atrasts spraudņa org.apache.maven.plugins deklarācijas dublikāts: maven-compiler-plugin @ line 250, 21. kolonna

[BRĪDINĀJUMS]

[BRĪDINĀJUMS] Ļoti ieteicams novērst šīs problēmas, jo tās apdraud jūsu konstrukcijas stabilitāti.

[BRĪDINĀJUMS]

[BRĪDINĀJUMS] Šī iemesla dēļ nākamās Maven versijas, iespējams, vairs neatbalsta šādu nepareizu projektu veidošanu.

[BRĪDINĀJUMS]

[INFO]

[INFO] ------------------< org.deeplearning4j: dl4j-piemēri >------------------

[INFO] Ēkas ievads DL4J 1.0.0-beta7

[INFO] -------------------------------- [burka] --------------- ------------------

Lejupielādēts no centrālā: //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 pie 4,4 kB / s)

Lejupielāde no centrālā: //repo.maven.apache.org/maven2/org/apache/maven/enforcer/enforcer/1.0.1/enforcer-1.0.1.pom

Lejupielādēts no centrālā: //repo.maven.apache.org/maven2/org/apache/maven/enforcer/enforcer/1.0.1/enforcer-1.0.1.pom (11 kB ar 137 kB / s)

Lejupielāde no centrālā: //repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-enforcer-plugin/1.0.1/maven-enforcer-plugin-1.0.1.jar

Lejupielādēts no centrālā: //repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-enforcer-plugin/1.0.1/maven-enforcer-plugin-1.0.1.jar (22 kB pie 396 kB / s)

Lejupielāde no centrālā: //repo.maven.apache.org/maven2/org/codehaus/mojo/exec-maven-plugin/1.4.0/exec-maven-plugin-1.4.0.pom

Lejupielādēts no centrālā: //repo.maven.apache.org/maven2/org/codehaus/mojo/exec-maven-plugin/1.4.0/exec-maven-plugin-1.4.0.pom (12 kB ar 283 kB / s)

Lejupielāde no centrālā: //repo.maven.apache.org/maven2/org/codehaus/mojo/exec-maven-plugin/1.4.0/exec-maven-plugin-1.4.0.jar

Lejupielādēts no centrālā: //repo.maven.apache.org/maven2/org/codehaus/mojo/exec-maven-plugin/1.4.0/exec-maven-plugin-1.4.0.jar (46 kB ar 924 kB / s)

Lejupielāde no centrālā: //repo.maven.apache.org/maven2/com/lewisd/lint-maven-plugin/0.0.11/lint-maven-plugin-0.0.11.pom

Lejupielādēts no centrālā: //repo.maven.apache.org/maven2/com/lewisd/lint-maven-plugin/0.0.11/lint-maven-plugin-0.0.11.pom (19 kB ar 430 kB / s)

Lejupielāde no centrālā: //repo.maven.apache.org/maven2/com/lewisd/lint-maven-plugin/0.0.11/lint-maven-plugin-0.0.11.jar

Lejupielādēts no centrālā: //repo.maven.apache.org/maven2/com/lewisd/lint-maven-plugin/0.0.11/lint-maven-plugin-0.0.11.jar (106 kB ar 1,6 MB / s)

Lejupielāde no centrālā: //repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-compiler-plugin/3.5.1/maven-compiler-plugin-3.5.1.pom

[BRĪDINĀJUMS] - org.agrona.kolekcijas.Hashhing

[BRĪDINĀJUMS] - org.agrona.collections.Long2ObjectCache $ ValueIterator

[BRĪDINĀJUMS] - org.agrona.collections.Int2ObjectHashMap $ EntrySet

[BRĪDINĀJUMS] - org.agrona.sadzīves.SleepingIdleStrategy

[BRĪDINĀJUMS] - org.agrona.collections.MutableInteger

[BRĪDINĀJUMS] - org.agrona.collections.Int2IntHashMap

[BRĪDINĀJUMS] - org.agrona.collections.IntIntPatērētājs

[BRĪDINĀJUMS] - org.agrona.concurrent.status.StatusIndicator

[BRĪDINĀJUMS] - vēl 175 ...

[BRĪDINĀJUMS] javafx-base-14-mac.jar, javafx-graphics-14-mac.jar, jakarta.xml.bind-api-2.3.2.jar definē 1 klases, kas pārklājas:

[BRĪDINĀJUMS] - modulis-informācija

[BRĪDINĀJUMS] protobuf-1.0.0-beta7.jar, guava-19.0.jar definē 3 klases, kas pārklājas:

[BRĪDINĀJUMS] - com.google.thirdparty.publicsuffix.TrieParser

[BRĪDINĀJUMS] - com.google.thirdparty.publicsuffix.PublicSuffixPatterns

[BRĪDINĀJUMS] - com.google.thirdparty.publicsuffix.PublicSuffixType

[BRĪDINĀJUMS] jsr305-3.0.2.jar, guava-1.0.0-beta7.jar definē 35 klases, kas pārklājas:

[BRĪDINĀJUMS] - javax.annotation.RegEx

[BRĪDINĀJUMS] - javax.annotation.concurrent.Maināms

[BRĪDINĀJUMS] - javax.annotation.meta.TypeQualifierDefault

[BRĪDINĀJUMS] - javax.annotation.meta.TypeQualifier

[BRĪDINĀJUMS] - javax.annotation.Sintakse

[BRĪDINĀJUMS] - javax.annotation.CheckReturnValue

[BRĪDINĀJUMS] - javax.annotation.CheckForNull

[BRĪDINĀJUMS] - javax.notot.Nonnull

[BRĪDINĀJUMS] - javax.annotation.meta.TypeQualifierNickname

[BRĪDINĀJUMS] - javax.annotation.MatchesPattern

[BRĪDINĀJUMS] - vēl 25 ...

[BRĪDINĀJUMS] maven-shadow-plugin ir atklājis, ka daži klases faili ir

[BRĪDINĀJUMS] atrodas divos vai vairākos JAR. Kad tas notiek, tikai viens

[BRĪDINĀJUMS] klases viena versija tiek kopēta uber burkā.

[BRĪDINĀJUMS] Parasti tas nav kaitīgi, un jūs varat izlaist šos brīdinājumus,

[BRĪDINĀJUMS] pretējā gadījumā mēģiniet manuāli izslēgt artefaktus, pamatojoties uz

[BRĪDINĀJUMS] mvn atkarība: koks -Detail = true un iepriekšminētā izeja.

[BRĪDINĀJUMS] Skatīt //maven.apache.org/plugins/maven-shade-plugin/

[INFO] Aizēnota artefakta pievienošana.

[INFO]

[INFO] --- maven-install-plugin: 2.4: instalēt (noklusējuma instalēšana) @ dl4j-piemēri ---

[INFO] Instalējot /Volumes/Data/repos/deeplearning4j-examples/dl4j-examples/target/dl4j-examples-1.0.0-beta7.jar to /Users/martinheller/.m2/repository/org/deeplearning4j/dl4j-examples/1.0 .0-beta7 / dl4j-piemēri-1.0.0-beta7.jar

[INFO] Instalējot /Volumes/Data/repos/deeplearning4j-examples/dl4j-examples/pom.xml uz /Users/martinheller/.m2/repository/org/deeplearning4j/dl4j-examples/1.0.0-beta7/dl4j-examples-1.0 .0-beta7.pom

[INFO] Instalējot /Volumes/Data/repos/deeplearning4j-examples/dl4j-examples/target/dl4j-examples-1.0.0-beta7-shaded.jar to /Users/martinheller/.m2/repository/org/deeplearning4j/dl4j-examples /1.0.0-beta7/dl4j- piemēri-1.0.0-beta7-shaded.jar

[INFO] ------------------------------------------------------------------------

[INFO] VEICIET panākumus

[INFO] ------------------------------------------------------------------------

[INFO] Kopējais laiks: 05:07 min

[INFO] Pabeigts: 2020-07-10T10: 58: 55-04: 00

[INFO] ------------------------------------------------------------------------

martinheller @ Martins-Retina-MacBook dl4j-piemēri%

Kad instalēšana ir pabeigta, atveriet direktoriju dl4j-piemēri / ar IntelliJ IDEA un mēģiniet palaist dažus piemērus.

$config[zx-auto] not found$config[zx-overlay] not found