Programmēšana

Kas ir Keras? Izskaidrots dziļā neironu tīkla API

Kaut arī dziļi neironu tīkli ir dusmas, galveno sistēmu sarežģītība ir šķērslis to izmantošanai mašīnmācības jaunajiem izstrādātājiem. Ir bijuši vairāki priekšlikumi par uzlabotām un vienkāršotām augsta līmeņa API neironu tīkla modeļu veidošanai, un visi no attāluma mēdz izskatīties līdzīgi, taču, rūpīgāk izpētot, tie parāda atšķirības.

Keras ir viens no vadošajiem augsta līmeņa neironu tīklu API. Tas ir rakstīts Python un atbalsta vairākus aizmugures neironu tīkla skaitļošanas dzinējus.

Keras un TensorFlow

Ņemot vērā to, ka TensorFlow projekts ir pieņēmis Keras kā augsta līmeņa API gaidāmajam TensorFlow 2.0 izlaidumam, Keras izskatās a uzvarētājs, ja ne vienmēr uzvarētājs. Šajā rakstā mēs izpētīsim Keras principus un ieviešanu, lai saprastu, kāpēc tas ir uzlabojums salīdzinājumā ar zema līmeņa dziļas mācīšanās API.

Pat TensorFlow 1.12 oficiālajā pamācībā Sākt darbu ar TensorFlow apmācība tiek izmantota TensorFlow iegultā augsta līmeņa Keras API, tf.keras. Turpretī TensorFlow Core API ir nepieciešams strādāt ar TensorFlow skaitļošanas grafikiem, tenzoriem, operācijām un sesijām, no kurām dažas var būt grūti saprotamas, kad tikai sākat strādāt ar TensorFlow. Zema līmeņa TensorFlow Core API izmantošanai ir dažas priekšrocības, galvenokārt atkļūdošanas laikā, taču par laimi jūs varat pēc vajadzības sajaukt augsta līmeņa un zema līmeņa TensorFlow API.

Keras principi

Keras tika izveidots tā, lai tas būtu lietotājam draudzīgs, modulārs, viegli paplašināms un darbotos ar Python. API tika “izstrādāta cilvēkiem, nevis mašīnām” un “ievēro paraugpraksi kognitīvās slodzes samazināšanai”.

Neironu slāņi, izmaksu funkcijas, optimizētāji, inicializācijas shēmas, aktivizācijas funkcijas un regulēšanas shēmas - tie visi ir atsevišķi moduļi, kurus varat apvienot, lai izveidotu jaunus modeļus. Jaunas moduļus ir vienkārši pievienot kā jaunas klases un funkcijas. Modeļi ir definēti Python kodā, nevis atsevišķos modeļu konfigurācijas failos.

Kāpēc Keras?

Lielākie iemesli Keras lietošanai ir tā pamatprincipi, galvenokārt tas, ka lietotājs ir draudzīgs. Papildus mācīšanās vieglumam un modeļa veidošanas vienkāršībai Keras piedāvā plašas ieviešanas priekšrocības, atbalstu daudzām ražošanas ieviešanas iespējām, integrāciju ar vismaz pieciem aizmugurējiem dzinējiem (TensorFlow, CNTK, Theano, MXNet un PlaidML), un spēcīgs atbalsts vairākiem GPU un dalīta apmācība. Turklāt Kerasu atbalsta Google, Microsoft, Amazon, Apple, Nvidia, Uber un citi.

Keras aizmugure

Keras pati neveic savas zema līmeņa darbības, piemēram, tenzora produktus un konvulsijas; tas paļaujas uz aizmugurējo dzinēju. Kaut arī Keras atbalsta vairākus aizmugurējos dzinējus, tā galvenā (un noklusējuma) aizmugure ir TensorFlow, un tās galvenais atbalstītājs ir Google. Keras API ir iesaiņots TensorFlow kā tf.keras, kas, kā minēts iepriekš, kļūs par primāro TensorFlow API no TensorFlow 2.0.

Lai mainītu aizmugures galus, vienkārši rediģējiet $ MĀJAS / .keras / keras.json failu un norādiet citu aizmugures nosaukumu, piemēram, teano vai CNTK. Alternatīvi, jūs varat ignorēt konfigurēto aizmuguri, definējot vides mainīgo KERAS_BACKENDvai nu čaulā, vai Python kodā, izmantojot os.environ ["KERAS_BACKEND"] īpašums.

Keras modeļi

The Modelis ir galvenā Keras datu struktūra. Ir divi galvenais Keras pieejamo modeļu veidi: Secīga modeli un Modelis klase, kas izmantota ar funkcionālo API.

Keras secīgi modeļi

The Secīga modelis ir lineāra slāņu kaudze, un slāņus var aprakstīt ļoti vienkārši. Šeit ir piemērs no Keras dokumentācijas, kurā tiek izmantota model.add () lai definētu divus blīvus slāņus a Secīga modelis:

ievest keras

no keras.models importēt secīgu

no keras.layers importē Blīvs

# Izveidojiet secīgu modeli ar blīviem slāņiem, izmantojot pievienošanas metodi

#Dense īsteno operāciju:

# output = aktivizēšana (punkts (ievade, kodols) + aizspriedumi)

#Units ir slāņa izvades vietas izmērs,

# kas vienāds ar slēpto vienību skaitu

# Aktivizācijas un zaudēšanas funkcijas var norādīt pēc virknēm vai klasēm

model.add (Blīvs (vienības = 10, aktivizēšana = "softmax"))

# Apkopošanas metode konfigurē modeļa mācību procesu

optimizētājs = "sgd",

metrika = ['precizitāte'])

# Fit metode veic apmācību partijās

# x_train un y_train ir Numpy masīvi - tāpat kā Scikit-Learn API.

# Novērtēšanas metode aprēķina zaudējumus un metriku

# apmācītajam modelim

# Paredzēšanas metode izmanto apmācīto modeli izejvielām

#, lai ģenerētu rezultātus

klases = model.predict (x_test, batch_size = 128)

Iepriekš minētā koda komentārus ir vērts izlasīt. Ir arī vērts atzīmēt, cik maz faktiskā koda ir salīdzinājumā ar, piemēram, zema līmeņa TensorFlow API. Katrai slāņa definīcijai ir nepieciešama viena koda rinda, sastādīšanai (mācību procesa definīcija) ir vajadzīga viena koda rinda, un uzstādīšana (apmācība), novērtēšana (zaudējumu un metrikas aprēķināšana) un apmācītā modeļa rezultātu prognozēšana katram prasa vienu koda rindiņu .

Keras funkcionālā API

Keras secīgais modelis ir vienkāršs, bet modeļa topoloģijā ierobežots. Keras funkcionālā API ir noderīga, lai izveidotu sarežģītus modeļus, piemēram, vairāku ievades / daudzizvades modeļus, virzītus acikliskos grafikus (DAG) un modeļus ar kopīgiem slāņiem.

Funkcionālajā API tiek izmantoti tie paši slāņi kā secīgajam modelim, taču tas nodrošina lielāku elastību to salikšanā. Funkcionālajā API vispirms definējat slāņus un pēc tam izveidojiet modeli, apkopojiet to un pielāgojiet (apmāciet). Novērtēšana un prognozēšana būtībā ir tāda pati kā secīgā modeļa gadījumā, tāpēc tie ir izlaisti zemāk esošajā parauga kodā.

no keras.layers importē Input, Dense

no keras.models importa modelis

# Tas atgriež tenzoru

# slāņa eksemplārs ir izsaucams uz tenzora un atgriež tenoru

x = blīvs (64, aktivizēšana = "relu") (x)

prognozes = Blīvs (10, aktivizēšana = "softmax") (x)

# Tādējādi tiek izveidots modelis, kas ietver

# ievades slānis un trīs blīvi slāņi

model.compile (optimizētājs = 'rmsprop',

zaudējums = "kategoriskā_krosentropija",

metrika = ['precizitāte'])

model.fit (dati, etiķetes) # sāk trenēties

Keras slāņi

Iepriekšējos piemēros mēs tikai izmantojām Blīvs slāņi. Keras piedāvā plašu iepriekš noteiktu slāņu veidu izvēli, kā arī atbalsta savu slāņu rakstīšanu.

Galvenie slāņi ietver Blīvs (punktveida produkts plus neobjektivitāte), Aktivizēšana (pārvietošanas funkcija vai neirona forma), Atteikšanās (nejauši katrā apmācības atjauninājumā iestatiet ievades vienību daļu uz 0, lai izvairītos no pārspīlēšanas), Lambda (aptiniet patvaļīgu izteicienu kā Slānis objekts), un vairāki citi. Konversijas slāņi (filtra izmantošana, lai izveidotu objektu karti) darbojas no 1D līdz 3D un ietver visizplatītākos variantus, piemēram, katras dimensijas apgriešanu un transponētos konvekcijas slāņus. Attēlu atpazīšanai parasti izmanto 2D konvekciju, kuru iedvesmoja vizuālās garozas funkcionalitāte.

Pooling (downscaling) slāņi darbojas no 1D līdz 3D un ietver visizplatītākos variantus, piemēram, max un vidējo pooling. Lokāli savienoti slāņi darbojas kā konvekcijas slāņi, izņemot to, ka svari netiek dalīti. Atkārtoti slāņi ietver vienkāršu (pilnībā saistītu atkārtošanos), vārtu, LSTM un citus; tie, cita starpā, ir noderīgi valodas apstrādei. Trokšņa slāņi palīdz izvairīties no pārmērīgas uzstādīšanas.

Keras datu kopas

Keras piegādā septiņas no kopējām dziļo mācību paraugkopām, izmantojot keras.datu kopas klasē. Tas ietver mazu krāsu attēlus cifar10 un cifar100, IMDB filmu apskatus, Reuters ziņu tēmas, MNIST ar roku rakstītus ciparus, MNIST modes attēlus un Bostonas mājokļu cenas.

Keras lietojumi un piemēri

Keras piegādā arī desmit labi zināmus modeļus, kurus sauc par Keras Applications, kas iepriekš sagatavoti pret ImageNet: Xception, VGG16, VGG19, ResNet50, InceptionV3, InceptionResNetV2, MobileNet, DenseNet, NASNet, MobileNetV2TK. Varat tos izmantot, lai prognozētu attēlu klasifikāciju, iegūtu no tiem funkcijas un precīzi pielāgotu modeļus citam klašu kopumam.

Starp citu, esošo modeļu precizēšana ir labs veids, kā paātrināt apmācību. Piemēram, jūs varat pievienot slāņus, kā vēlaties, iesaldēt pamatslāņus, lai apmācītu jaunos slāņus, pēc tam atsaldēt dažus pamatslāņus, lai precīzi noregulētu apmācību. Iestatot, jūs varat iesaldēt slāni layer.trainable = Nepatiesa.

Keras piemēru repozitorijā ir vairāk nekā 40 paraugu modeļu. Tie aptver redzes modeļus, tekstu un secības, kā arī ģeneratīvos modeļus.

Keras izvietošana

Keras modeļus var izvietot plašā platformu klāstā, iespējams, vairāk nekā jebkurā citā dziļās mācīšanās sistēmā. Tas ietver iOS, izmantojot CoreML (atbalsta Apple); Android, izmantojot TensorFlow Android izpildlaiku; pārlūkprogrammā, izmantojot Keras.js un WebDNN; Google Cloud, izmantojot TensorFlow-Serving; Python tīmekļa lietotnes aizmugurē; JVM, izmantojot DL4J modeļa importu; un uz Raspberry Pi.

Lai sāktu darbu ar Keras, izlasiet dokumentāciju, apskatiet kodu repozitoriju, instalējiet TensorFlow (vai citu aizmugures dzinēju) un Keras un izmēģiniet Keras Sequential modeļa darba sākšanas pamācību. No turienes jūs varat pāriet uz citām apmācībām un galu galā izpētīt Keras piemērus.

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