Programování

Co je Keras? Vysvětlení API hluboké neurální sítě

Zatímco hluboké neuronové sítě zuří, složitost hlavních rámců byla překážkou jejich použití pro vývojáře, kteří začínají se strojovým učením. Objevilo se několik návrhů na vylepšené a zjednodušené API na vysoké úrovni pro vytváření modelů neuronových sítí, z nichž všechny mají sklon vypadat podobně z dálky, ale při bližším zkoumání vykazují rozdíly.

Keras je jedním z předních API neuronových sítí na vysoké úrovni. Je napsán v Pythonu a podporuje více výpočetních enginů neuronové sítě typu back-end.

Keras a TensorFlow

Vzhledem k tomu, že projekt TensorFlow přijal Keras jako API na vysoké úrovni pro nadcházející vydání TensorFlow 2.0, vypadá Keras jako A vítěz, ne-li nutně the vítěz. V tomto článku prozkoumáme principy a implementaci protokolu Keras s pohledem na pochopení, proč jde o vylepšení oproti nízkoúrovňovým API pro hluboké učení.

I v TensorFlow 1.12 používá oficiální výukový program Začínáme s TensorFlow vysoce kvalitní rozhraní Keras API vložené do TensorFlow, tf.keras. Naproti tomu rozhraní TensorFlow Core API vyžaduje práci s výpočetními grafy, tenzory, operacemi a relacemi TensorFlow, z nichž může být těžké pochopit, když s TensorFlow teprve začínáte pracovat. Použití nízkoúrovňového rozhraní API TensorFlow Core má několik výhod, většinou při ladění, ale naštěstí můžete podle potřeby kombinovat rozhraní TensorFlow API na vysoké a nízké úrovni.

Principy Keras

Keras byl vytvořen tak, aby byl uživatelsky přívětivý, modulární, snadno rozšiřitelný a aby pracoval s Pythonem. API bylo „navrženo pro lidi, nikoli pro stroje“, a „dodržuje osvědčené postupy pro snižování kognitivní zátěže.“

Neuronové vrstvy, nákladové funkce, optimalizátory, inicializační schémata, aktivační funkce a regularizační schémata jsou všechny samostatné moduly, které můžete kombinovat a vytvářet nové modely. Nové moduly se snadno přidávají jako nové třídy a funkce. Modely jsou definovány v kódu Pythonu, nikoli samostatné konfigurační soubory modelu.

Proč Keras?

Největší důvody, proč používat Keras, vyplývají z jeho hlavních zásad, především z toho, že je uživatelsky přívětivý. Kromě snadného učení a vytváření modelů nabízí Keras výhody širokého přijetí, podpory široké škály možností nasazení výroby, integrace s nejméně pěti back-endovými motory (TensorFlow, CNTK, Theano, MXNet a PlaidML), a silná podpora pro více GPU a distribuované školení. Navíc společnost Keras podporuje společnosti Google, Microsoft, Amazon, Apple, Nvidia, Uber a další.

Zadní část Keras

Správný Keras neprovádí své vlastní operace na nízké úrovni, jako jsou tenzorové produkty a konvoluce; spoléhá se na to na zadním motoru. Přestože Keras podporuje více back-endových modulů, jeho primárním (a výchozím) back-endem je TensorFlow a jeho hlavním podporovatelem je Google. Keras API je zabaleno v TensorFlow as tf.keras, které, jak již bylo zmíněno dříve, se od TensorFlow 2.0 stane primárním API TensorFlow.

Chcete-li změnit koncová zařízení, jednoduše upravte svůj $ HOME / .keras / keras.json soubor a zadejte jiný název back-endu, například theano nebo CNTK. Alternativně můžete nakonfigurovaný back-end přepsat definováním proměnné prostředí KERAS_BACKEND, buď ve vašem shellu, nebo v kódu Pythonu pomocí os.environ ["KERAS_BACKEND"] vlastnictví.

Modely Keras

The Modelka je základní datová struktura Keras. Existují dva hlavní typy modelů dostupné v systému Keras: Sekvenční model a Modelka třída používaná s funkčním API.

Sekvenční modely Keras

The Sekvenční model je lineární stoh vrstev a vrstvy lze popsat velmi jednoduše. Zde je příklad z dokumentace Keras, která používá model.add () definovat dvě husté vrstvy v a Sekvenční Modelka:

import keras

z keras.models import sekvenční

z keras.layers importovat Hustý

# Vytvořte sekvenční model s hustými vrstvami pomocí metody přidání

#Dense implementuje operaci:

# výstup = aktivace (tečka (vstup, jádro) + zkreslení)

# Jednotky jsou rozměrnost výstupního prostoru pro vrstvu,

# což se rovná počtu skrytých jednotek

# Funkce aktivace a ztráty mohou být specifikovány řetězci nebo třídami

model.add (Hustý (jednotky = 10, aktivace = "softmax"))

# Metoda kompilace konfiguruje proces učení modelu

optimizer = "sgd",

metriky = ['přesnost'])

# Metoda fit procvičuje dávky

# x_train a y_train jsou pole Numpy - stejně jako v rozhraní Scikit-Learn API.

# Metoda vyhodnocení vypočítá ztráty a metriky

# pro trénovaný model

# Metoda predikce použije trénovaný model na vstupy

# pro generování výstupů

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

Komentáře v kódu výše stojí za přečtení. Za zmínku stojí také to, jak malý je skutečný kód ve srovnání s nízkoúrovňovými API TensorFlow. Každá definice vrstvy vyžaduje jeden řádek kódu, kompilace (definice procesu učení) trvá jeden řádek kódu a přizpůsobení (trénink), vyhodnocení (výpočet ztrát a metrik) a předpovídání výstupů z trénovaného modelu každý trvá jeden řádek kódu .

Funkční API Keras

Sekvenční model Keras je jednoduchý, ale omezený v topologii modelu. Funkční API Keras je užitečné pro vytváření složitých modelů, jako jsou modely s více vstupy / více výstupy, řízené acyklické grafy (DAG) a modely se sdílenými vrstvami.

Funkční API používá stejné vrstvy jako Sequential model, ale poskytuje větší flexibilitu při jejich spojování. Ve funkčním rozhraní API nejdříve definujete vrstvy a poté vytvoříte model, zkompilujete jej a přizpůsobíte (trénujete). Vyhodnocení a předpověď jsou v podstatě stejné jako v sekvenčním modelu, takže byly v ukázkovém kódu níže vynechány.

z importu keras.layers Input, Dense

z modelu importu keras.models

# Tím se vrátí tenzor

# instance vrstvy lze volat na tenzoru a vrací tenzor

x = Hustý (64, aktivace = "relu") (x)

předpovědi = Hustý (10, aktivace = "softmax") (x)

# Tím se vytvoří model, který zahrnuje

# Vstupní vrstva a tři husté vrstvy

model.compile (optimizer = 'rmsprop',

loss = "categorical_crossentropy",

metriky = ['přesnost'])

model.fit (data, štítky) # začíná trénovat

Kerasové vrstvy

V předchozích příkladech jsme pouze použili Hustý vrstvy. Keras má široký výběr předdefinovaných typů vrstev a podporuje také psaní vlastních vrstev.

Mezi základní vrstvy patří Hustý (bodový produkt plus zkreslení), Aktivace (přenosová funkce nebo tvar neuronu), Výpadek (náhodně nastavte zlomek vstupních jednotek na 0 při každé aktualizaci tréninku, aby nedošlo k přetížení), Lambda (zabalit libovolný výraz jako a Vrstva objekt) a několik dalších. Konvoluční vrstvy (použití filtru k vytvoření mapy prvků) běží od 1D do 3D a zahrnují nejběžnější varianty, jako je oříznutí a transponované konvoluční vrstvy pro každou dimenzi. K rozpoznávání obrazu se běžně používá 2D konvoluce, která byla inspirována funkčností vizuální kůry.

Sdružování (downscaling) vrstev probíhá od 1D do 3D a zahrnuje nejběžnější varianty, jako je maximální a průměrné sdružování. Lokálně spojené vrstvy fungují jako konvoluční vrstvy, až na to, že váhy nejsou sdílené. Opakující se vrstvy zahrnují jednoduché (plně spojené opakování), brány, LSTM a další; tyto jsou mimo jiné užitečné pro jazykové zpracování. Hlukové vrstvy pomáhají předcházet přetížení.

Datové sady KERAS

Společnost Keras dodává sedm běžných ukázkových datových sad hlubokého učení prostřednictvím keras.datasets třída. To zahrnuje malé barevné obrázky cifar10 a cifar100, recenze filmů IMDB, témata zpravodajských sítí Reuters, ručně psané číslice MNIST, módní obrázky MNIST a ceny bydlení v Bostonu.

Aplikace a příklady Keras

Společnost Keras také dodává deset známých modelů s názvem Keras Applications, které byly před ImageNet předcvičeny: Xception, VGG16, VGG19, ResNet50, InceptionV3, InceptionResNetV2, MobileNet, DenseNet, NASNet, MobileNetV2TK. Pomocí nich můžete předpovědět klasifikaci obrázků, extrahovat z nich funkce a doladit modely v jiné sadě tříd.

Mimochodem, doladění stávajících modelů je dobrý způsob, jak zrychlit trénink. Můžete například přidávat vrstvy podle libosti, zmrazit základní vrstvy, abyste mohli trénovat nové vrstvy, a poté rozladit některé základní vrstvy, abyste doladili trénink. Vrstvu můžete zmrazit nastavením layer.trainable = False.

Repozitář příkladů Keras obsahuje více než 40 ukázkových modelů. Zahrnují modely vidění, text a sekvence a generativní modely.

Nasazení Keras

Modely Keras lze nasadit na širokou škálu platforem, možná více než jakýkoli jiný rámec hlubokého učení. To zahrnuje iOS prostřednictvím CoreML (podporováno společností Apple); Android prostřednictvím běhového prostředí TensorFlow pro Android; v prohlížeči přes Keras.js a WebDNN; ve službě Google Cloud prostřednictvím služby TensorFlow-Serving; v back-endu Python webapp; na JVM prostřednictvím importu modelu DL4J; a na Raspberry Pi.

Chcete-li začít s Kerasem, přečtěte si dokumentaci, podívejte se na úložiště kódu, nainstalujte TensorFlow (nebo jiný back-end engine) a Keras a vyzkoušejte tutoriál Začínáme pro model Keras Sequential. Odtud můžete přejít na další výukové programy a nakonec prozkoumat příklady Keras.

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