Programovanie

Čo je KERAS? Bolo vysvetlené API hlbokej neurónovej siete

Zatiaľ čo zúrivé sú hlboké neurónové siete, zložitosť hlavných rámcov bola prekážkou ich použitia pre vývojárov, ktorí sú v oblasti strojového učenia noví. Existuje niekoľko návrhov na vylepšené a zjednodušené API na vysokej úrovni pre vytváranie modelov neurónových sietí, pričom všetky majú tendenciu vyzerať z diaľky podobne, ale pri bližšom skúmaní vykazujú rozdiely.

Keras je jedným z popredných API neurónových sietí na vysokej úrovni. Je napísaný v jazyku Python a podporuje viac výpočtových strojov back-endovej neurónovej siete.

Keras a TensorFlow

Vzhľadom na to, že projekt TensorFlow prijal Keras ako API na vysokej úrovni pre nadchádzajúce vydanie TensorFlow 2.0, zdá sa, že je Keras a víťaz, ak nie nevyhnutne the víťaz. V tomto článku sa budeme venovať princípom a implementácii protokolu Keras s ohľadom na pochopenie toho, prečo ide o vylepšenie oproti nízkoúrovňovým API pre hlboké učenie.

Aj v TensorFlow 1.12 používa oficiálny tutoriál Začíname s TensorFlow vysoko kvalitné rozhranie Keras API vložené do TensorFlow, tf.keras. Naproti tomu rozhranie TensorFlow Core API vyžaduje prácu s výpočtovými grafmi, tenzormi, operáciami a reláciami TensorFlow, z ktorých niektoré môžu byť ťažko pochopiteľné, keď s TensorFlow ešte len začínate pracovať. Používanie nízkoúrovňového rozhrania TensorFlow Core API má určité výhody, väčšinou pri ladení, ale našťastie môžete podľa potreby kombinovať vysokoúrovňové a nízkoúrovňové rozhrania TensorFlow API.

Princípy spoločnosti Keras

Keras bol vytvorený tak, aby bol užívateľsky prívetivý, modulárny, ľahko rozšíriteľný a aby pracoval s Pythonom. API bolo „určené pre ľudí, nie pre stroje“, a „dodržiava najlepšie postupy pri znižovaní kognitívnej záťaže“.

Neurónové vrstvy, nákladové funkcie, optimalizátory, inicializačné schémy, aktivačné funkcie a regularizačné schémy sú všetky samostatné moduly, ktoré môžete kombinovať a vytvárať tak nové modely. Nové moduly sa ľahko pridávajú ako nové triedy a funkcie. Modely sú definované v kóde Python, nie v samostatných konfiguračných súboroch modelov.

Prečo Keras?

Najväčšie dôvody na použitie servera Keras vyplývajú z jeho hlavných zásad, predovšetkým z dôvodu užívateľskej prívetivosti. Okrem ľahkého učenia a ľahkého vytvárania modelov ponúka Keras výhody širokého prijatia, podpory širokého spektra možností nasadenia výroby, integrácie s najmenej piatimi back-endovými modulmi (TensorFlow, CNTK, Theano, MXNet a PlaidML), a silná podpora pre viac GPU a distribuované školenie. Spoločnosť Keras navyše podporuje spoločnosti Google, Microsoft, Amazon, Apple, Nvidia, Uber a ďalšie.

Zadný koniec Keras

Samotný produkt Keras nevykonáva svoje vlastné operácie na nízkej úrovni, napríklad tenzorové produkty a konvolúcie; spolieha sa pri tom na back-endový motor. Aj keď Keras podporuje viac back-endových nástrojov, jeho primárnym (a predvoleným) back-endom je TensorFlow a jeho hlavným podporovateľom je Google. Keras API je zabalené v TensorFlow ako tf.keras, ktoré, ako už bolo spomenuté vyššie, sa od TensorFlow 2.0 stane primárnym API TensorFlow.

Ak chcete zmeniť klientske rozhrania, jednoducho upravte svoje $ HOME / .keras / keras.json súbor a zadajte iný názov koncového zariadenia, napríklad theano alebo CNTK. Prípadne môžete nakonfigurovaný back-end prepísať definovaním premennej prostredia KERAS_BACKEND, buď vo svojom shell, alebo vo vašom kóde Python pomocou os.environ ["KERAS_BACKEND"] nehnuteľnosť.

Modely Keras

The Model je základná dátová štruktúra Keras. Existujú dva hlavný typy modelov dostupné v systéme Keras: Postupné model a Model triedy používanej s funkčným API.

Sekvenčné modely Keras

The Postupné model je lineárny súhrn vrstiev a vrstvy je možné opísať veľmi jednoducho. Tu je príklad z použitej dokumentácie k produktu Keras model.add () definovať dve husté vrstvy v a Postupné Model:

import keras

z keras.models import sekvenčný

z keras.layers importovať Husté

# Vytvorte sekvenčný model s hustými vrstvami pomocou metódy pridania

# Hustá implementuje operáciu:

# výstup = aktivácia (bodka (vstup, jadro) + skreslenie)

# Jednotky sú rozmerovosť výstupného priestoru pre vrstvu,

# čo sa rovná počtu skrytých jednotiek

#Aktivačné a stratové funkcie môžu byť špecifikované reťazcami alebo triedami

model.add (hustá (jednotky = 10, aktivácia = "softmax"))

# Metóda kompilácie konfiguruje proces učenia modelu

optimizer = "sgd",

metriky = ['presnosť'])

# Metóda fit robí výcvik v dávkach

# x_train a y_train sú polia Numpy - presne ako v rozhraní Scikit-Learn API.

# Metóda vyhodnotenia počíta straty a metriky

# pre trénovaný model

# Metóda predikcie použije trénovaný model na vstupy

# na generovanie výstupov

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

Komentáre v kóde vyššie stoja za prečítanie. Za zmienku stojí aj to, ako málo je v skutočnom kóde krivky v porovnaní napríklad s nízkoúrovňovými API TensorFlow. Každá definícia vrstvy vyžaduje jeden riadok kódu, kompilácia (definícia procesu učenia) má jeden riadok kódu a prispôsobenie (školenie), vyhodnotenie (výpočet strát a metrík) a predpovedanie výstupov z trénovaného modelu každý z nich má jeden riadok kódu .

Funkčné rozhranie KERAS

Sekvenčný model Keras je jednoduchý, ale v topológii modelu je obmedzený. Funkčné rozhranie API spoločnosti Keras je užitočné na vytváranie zložitých modelov, ako sú napríklad modely s viacerými vstupmi a výstupmi, riadené acyklické grafy (DAG) a modely so zdieľanými vrstvami.

Funkčné API používa rovnaké vrstvy ako sekvenčný model, ale poskytuje väčšiu flexibilitu pri ich spájaní. Vo funkčnom rozhraní API najskôr definujete vrstvy a potom vytvoríte model, skompilujete ho a prispôsobíte (natrénujete). Vyhodnotenie a predpoveď sú v podstate rovnaké ako v sekvenčnom modeli, preto ich v ukážkovom kóde nižšie vynechali.

z importu keras.layers Input, Dense

z modelu importu keras.models

# Týmto sa vráti tenzor

# inštancia vrstvy je volaná na tenzore a vracia tenzor

x = Hustý (64, aktivácia = "relu") (x)

predpovede = Husté (10, aktivácia = "softmax") (x)

# Týmto sa vytvorí model, ktorý obsahuje

# vstupná vrstva a tri husté vrstvy

model.compile (optimizer = 'rmsprop',

loss = "categorical_crossentropy",

metriky = ['presnosť'])

model.fit (údaje, štítky) # začína trénovať

Kerasove vrstvy

V predchádzajúcich príkladoch sme iba použili Husté vrstiev. Keras má široký výber preddefinovaných typov vrstiev a podporuje tiež písanie vlastných vrstiev.

Zahŕňajú základné vrstvy Husté (bodový produkt plus predpätie), Aktivácia (prenosová funkcia alebo tvar neurónu), Vypadnúť (náhodne nastavte zlomok vstupných jednotiek na 0 pri každej aktualizácii tréningu, aby ste predišli preťaženiu), Lambda (zabaliť ľubovoľný výraz ako a Vrstva objekt) a niekoľko ďalších. Konvolučné vrstvy (použitie filtra na vytvorenie mapy prvkov) prebiehajú od 1D do 3D a zahŕňajú najbežnejšie varianty, ako sú orezanie a transponované konvolučné vrstvy pre každú dimenziu. Na rozpoznávanie obrázkov sa bežne používa 2D konvolúcia, ktorá bola inšpirovaná funkčnosťou vizuálnej kôry.

Združovacie (zmenšovacie) vrstvy prebiehajú od 1D do 3D a zahŕňajú najbežnejšie varianty, ako je napríklad max. A priemerné združovanie. Lokálne spojené vrstvy fungujú ako konvolučné vrstvy, až na to, že váhy nie sú zdieľané. Opakujúce sa vrstvy zahŕňajú jednoduché (úplne spojené opakovanie), bránové, LSTM a ďalšie; tieto sú užitočné okrem iného pre jazykové spracovanie. Hlukové vrstvy pomáhajú zabrániť nadmernému vybaveniu.

Množiny údajov Keras

Spoločnosť Keras dodáva sedem z bežných vzorových súborov hlbokého učenia prostredníctvom servera keras.datasets trieda. Patria sem malé farebné obrázky cifar10 a cifar100, filmové recenzie IMDB, témy spravodajských sietí Reuters, ručne písané číslice MNIST, módne obrázky MNIST a ceny ubytovania v Bostone.

Aplikácie Keras a príklady

Spoločnosť Keras tiež dodáva desať známych modelov s názvom Keras Applications, ktoré sú vopred pripravené na server ImageNet: Xception, VGG16, VGG19, ResNet50, InceptionV3, InceptionResNetV2, MobileNet, DenseNet, NASNet, MobileNetV2TK. Pomocou nich môžete predpovedať klasifikáciu obrázkov, extrahovať z nich funkcie a doladiť modely v rôznych množinách tried.

Mimochodom, doladenie existujúcich modelov je dobrý spôsob, ako urýchliť tréning. Môžete napríklad pridať ľubovoľné vrstvy, zmraziť základné vrstvy, aby ste natrénovali nové vrstvy, a potom rozladením niektorých základných vrstiev doladiť tréning. Vrstvu môžete zmraziť nastavením layer.trainable = False.

Repozitár príkladov Keras obsahuje viac ako 40 vzorových modelov. Zahŕňajú modely videnia, text a sekvencie a generatívne modely.

Nasadzuje sa Keras

Modely Keras je možné nasadiť na širokú škálu platforiem, možno viac ako na akýkoľvek iný rámec hlbokého učenia. To zahŕňa iOS prostredníctvom CoreML (podporované spoločnosťou Apple); Android cez runtime TensorFlow pre Android; v prehliadači cez Keras.js a WebDNN; v službe Google Cloud prostredníctvom služby TensorFlow-Serving; v koncovom zariadení Python Webapp; na JVM prostredníctvom importu modelu DL4J; a na Raspberry Pi.

Ak chcete začať s programom Keras, prečítajte si dokumentáciu, pozrite sa na úložisko kódov, nainštalujte TensorFlow (alebo iný backendový modul) a Keras a vyskúšajte príručku Začíname pre sekvenčný model Keras. Odtiaľ môžete prejsť na ďalšie výukové programy a nakoniec preskúmať príklady protokolu Keras.

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