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_BACKEND
vai 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 kerasno 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ātusklases = 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, Denseno 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.