Ohjelmointi

Mikä on Keras? Syvän hermoverkon sovellusliittymä selitti

Vaikka syvät hermoverkot ovat kaikki raivoa, tärkeimpien kehysten monimutkaisuus on ollut este niiden käytölle koneoppimisen uusille kehittäjille. Neuroverkkomallien rakentamiseksi on tehty useita parannettujen ja yksinkertaistettujen korkean tason sovellusliittymien ehdotuksia, jotka kaikki näyttävät samankaltaisilta etäisyydeltä, mutta osoittavat eroja tarkemmin tarkasteltaessa.

Keras on yksi johtavista korkean tason hermoverkkojen sovellusliittymistä. Se on kirjoitettu Pythonissa ja tukee useita back-end-hermoverkkolaskennan moottoreita.

Keras ja TensorFlow

Kun otetaan huomioon, että TensorFlow-projekti on hyväksynyt Kerasin tulevan TensorFlow 2.0 -julkaisun korkean tason API: ksi, Keras näyttää olevan a voittaja, ellei välttämättä voittaja. Tässä artikkelissa tutustumme Kerasin periaatteisiin ja käyttöönottoon ja pyrimme ymmärtämään, miksi se on parannus matalan tason syvän oppimisen sovellusliittymiin verrattuna.

Jopa TensorFlow 1.12: ssä virallinen Aloita TensorFlow -oppaassa -ohjelma käyttää TensorFlow-sovellukseen upotettua korkean tason Keras-sovellusliittymää, tf.keras. Sen sijaan TensorFlow Core -sovellusliittymä vaatii työskentelyä TensorFlow-laskentakaavioiden, tensoreiden, operaatioiden ja istuntojen kanssa, joista joitain voi olla vaikea ymmärtää, kun aloitat vasta työskentelyn TensorFlow'n kanssa. Matalan tason TensorFlow Core -sovellusliittymän käytössä on joitain etuja, useimmiten virheenkorjauksessa, mutta onneksi voit sekoittaa korkean ja matalan tason TensorFlow-sovellusliittymiä tarpeen mukaan.

Keras-periaatteet

Keras luotiin käyttäjäystävälliseksi, modulaariseksi, helposti laajennettavaksi ja toimimaan Pythonin kanssa. API on suunniteltu "ihmisille, ei koneille", ja "noudattaa kognitiivisen kuormituksen vähentämisen parhaita käytäntöjä".

Neuraalikerrokset, kustannustoiminnot, optimoijat, alustusmenetelmät, aktivointitoiminnot ja säätämismallit ovat kaikki erillisiä moduuleja, jotka voit yhdistää uusien mallien luomiseksi. Uudet moduulit on helppo lisätä, koska ne ovat uusia luokkia ja toimintoja. Mallit määritellään Python-koodissa, ei erillisissä mallin kokoonpanotiedostoissa.

Miksi Keras?

Suurimmat syyt Kerasin käyttöön johtuvat sen periaatteista, pääasiassa käyttäjäystävällisyydestä. Oppimisen ja mallin rakentamisen helppouden lisäksi Keras tarjoaa laajan käyttöönoton edut, tuen monille tuotannon käyttöönottovaihtoehdoille, integroinnin vähintään viiteen taustamoottoriin (TensorFlow, CNTK, Theano, MXNet ja PlaidML), ja vahva tuki useille näytönohjaimille ja hajautetulle koulutukselle. Lisäksi Kerasia tukevat Google, Microsoft, Amazon, Apple, Nvidia, Uber ja muut.

Keras takana

Keras varsinainen ei tee omia matalan tason toimintojaan, kuten tensorituotteita ja kääntymisiä; se perustuu taustajärjestelmään. Vaikka Keras tukee useita taustamoottoreita, sen ensisijainen (ja oletus) takapää on TensorFlow, ja sen ensisijainen tukija on Google. Keras-sovellusliittymä on pakattu TensorFlow-tiedostoon nimellä tf.keras, josta, kuten aiemmin mainittiin, tulee TensorFlow 2.0: n ensisijainen TensorFlow-sovellusliittymä.

Muuta takapäätä yksinkertaisesti muokkaamalla $ HOME / .keras / keras.json tiedosto ja määritä eri taustan nimi, kuten theano tai CNTK. Vaihtoehtoisesti voit ohittaa määritetyn taustan määrittelemällä ympäristömuuttujan KERAS_BACKEND, joko komentotulkissa tai Python-koodissasi os.environ ["KERAS_BACKEND"] omaisuus.

Keras-mallit

Malli on keskeinen Keras-tietorakenne. On kaksi tärkein tyypit malleja saatavilla Keras: Peräkkäinen malli ja Malli luokka, jota käytetään toiminnallisen API: n kanssa.

Keras-sarjan mallit

Peräkkäinen malli on lineaarinen pino kerroksia, ja kerrokset voidaan kuvata hyvin yksinkertaisesti. Tässä on esimerkki käytetystä Keras-dokumentaatiosta malli.add () määrittää kaksi tiheää kerrosta a Peräkkäinen malli:

tuoda kera

keras.malleista tuo peräkkäin

kerasista. kerrokset tuovat tiheää

# Luo peräkkäinen malli tiheillä tasoilla lisäämällä menetelmää

#Dense toteuttaa operaation:

# lähtö = aktivointi (piste (tulo, ydin) + ennakkoasento)

#Yksiköt ovat tason ulostulotilan ulottuvuus,

# mikä vastaa piilotettujen yksiköiden määrää

#Aktivointi- ja häviötoiminnot voidaan määrittää merkkijonoilla tai luokilla

model.add (Tiheä (yksiköt = 10, aktivointi = "softmax"))

#Käännösmenetelmä määrittää mallin oppimisprosessin

optimoija = "sgd",

metriikka = ['tarkkuus'])

#Fit-menetelmä tekee harjoituksen erissä

# x_train ja y_train ovat Numpy-taulukot - aivan kuten Scikit-Learn-sovellusliittymässä.

#Arviointimenetelmä laskee tappiot ja mittarit

# koulutetulle mallille

# Ennustemenetelmä soveltaa koulutettua mallia syötteisiin

# tuottaa tuloksia

class = model.predict (x_test, erä_koko = 128)

Yllä olevan koodin kommentit kannattaa lukea. On myös syytä huomata, kuinka vähän matkaa todellisessa koodissa on verrattuna esimerkiksi matalan tason TensorFlow-sovellusliittymiin. Kukin kerroksen määrittely vaatii yhden koodirivin, kokoaminen (oppimisprosessin määrittely) vie yhden rivin koodia, ja sovitus (koulutus), arviointi (tappioiden ja mittareiden laskeminen) ja koulutetun mallin tulosten ennustaminen vievät yhden koodirivin .

Keras-toiminnallinen sovellusliittymä

Keras Sequential -malli on yksinkertainen, mutta mallintopologiassa rajoitettu. Keras-toiminnallinen sovellusliittymä on hyödyllinen monimutkaisten mallien, kuten moni- tai monilähtöisten mallien, suunnattujen asyklisten kaavioiden (DAG) ja jaettujen tasojen mallien, luomiseen.

Toiminnallinen API käyttää samoja kerroksia kuin Sequential-malli, mutta tarjoaa enemmän joustavuutta niiden yhdistämisessä. Toiminnallisessa sovellusliittymässä määrität ensin kerrokset ja luo sitten malli, koota se ja sovittaa (kouluttaa) sen. Arviointi ja ennustus ovat olennaisesti samat kuin peräkkäisessä mallissa, joten ne on jätetty pois alla olevasta näytekoodista.

keras.layersista tuo Input, Dense

keras.models-tuontimallista

# Tämä palauttaa tensorin

# kerroksen esiintymä voidaan kutsua tensorille ja palauttaa tensorin

x = tiheä (64, aktivointi = "relu") (x)

ennusteet = tiheä (10, aktivointi = "softmax") (x)

# Tämä luo mallin, joka sisältää

# syöttökerros ja kolme tiheää kerrosta

model.compile (optimoija = 'rmsprop',

tappio = "kategorinen_ristikopio",

metriikka = ['tarkkuus'])

model.fit (tiedot, tarrat) # aloittaa harjoittelun

Keras-kerrokset

Aikaisemmissa esimerkeissä käytimme vain Tiheä kerroksia. Kerasilla on laaja valikoima ennalta määritettyjä tasotyyppejä, ja se tukee myös omien tasojen kirjoittamista.

Ydinkerrokset sisältävät Tiheä (pistetuote plus puolueellisuus), Aktivointi (siirtofunktio tai hermosolun muoto), Lopettaa (aseta satunnaisesti murto-osa syöttöyksiköistä arvoon 0 jokaisessa harjoituspäivityksessä ylikuormituksen välttämiseksi), Lambda (kääri mielivaltainen lauseke a Kerros esine) ja useita muita. Konvoluutiokerrokset (suodattimen käyttö ominaisuuskartan luomiseen) kulkevat 1D: stä 3D: hen ja sisältävät yleisimmät muunnokset, kuten rajaus ja transponoidut konvoluutiokerrokset kullekin ulottuvuudelle. 2D-konvoluutiota, jota inspiroi visuaalisen aivokuoren toiminnallisuus, käytetään yleisesti kuvan tunnistamiseen.

Pooling (downscaling) kerrokset kulkevat 1D: stä 3D: hen ja sisältävät yleisimmät muunnokset, kuten max ja keskimääräinen pooling. Paikallisesti yhdistetyt kerrokset toimivat kuten konvoluutiokerrokset, paitsi että painot ovat jakamattomia. Toistuvia kerroksia ovat yksinkertainen (täysin kytketty toistuminen), aidatut, LSTM ja muut; nämä ovat hyödyllisiä muun muassa kielenkäsittelyssä. Melukerrokset auttavat välttämään ylikuormitusta.

Keras-tietojoukot

Keras toimittaa seitsemän yleistä syvällisen oppimisen näytetiedostoa keras.datasets luokassa. Se sisältää pienet värikuvat cifar10 ja cifar100, IMDB-elokuvakatsaukset, Reutersin uutiset, MNIST-käsinkirjoitetut numerot, MNIST-muotikuvat ja Bostonin asuntojen hinnat.

Keras-sovellukset ja esimerkit

Keras toimittaa myös kymmenen tunnettua mallia, nimeltään Keras Applications, esikäsiteltyinä ImageNetiin: Xception, VGG16, VGG19, ResNet50, InceptionV3, InceptionResNetV2, MobileNet, DenseNet, NASNet, MobileNetV2TK. Näiden avulla voit ennustaa kuvien luokituksen, poimia niistä ominaisuuksia ja hienosäätää malleja eri luokkaryhmille.

Muuten, olemassa olevien mallien hienosäätö on hyvä tapa nopeuttaa harjoittelua. Voit esimerkiksi lisätä kerroksia haluamallasi tavalla, jäädyttää peruskerrokset uusien kerrosten kouluttamiseksi ja vapauttaa sitten joitain peruskerroksista hienosäätääksesi harjoittelua. Voit jäädyttää kerroksen asetuksella layer.trainable = Väärä.

Keras-esimerkkivarasto sisältää yli 40 mallimallia. Ne kattavat näkemallit, tekstin ja sekvenssit sekä generatiiviset mallit.

Kerasin käyttöönotto

Keras-malleja voidaan käyttää monilla alustoilla, kenties enemmän kuin mikään muu syväoppimiskehys. Tähän sisältyy iOS, CoreML: n kautta (Apple tukee); Android TensorFlow Android-ajon aikana; selaimessa, Keras.js: n ja WebDNN: n kautta; Google Cloudissa TensorFlow-Servingin kautta; Python-verkkosovelluksen takapäässä; JVM: ssä DL4J-mallin tuonnin kautta; ja Vadelma Pi.

Aloita Kerasin käyttö lukemalla ohjeet, tutustumalla koodivarastoon, asentamalla TensorFlow (tai jokin muu taustamoottori) ja Keras ja kokeilemalla Keras Sequential -mallin Aloitusopas-opetusohjelmaa. Sieltä voit siirtyä muihin opetusohjelmiin ja tutkia lopulta Keras-esimerkkejä.

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