Programiranje

Kaj je Keras? Razložen API globoke nevronske mreže

Čeprav so globoke nevronske mreže vse v modi, je zapletenost glavnih okvirov ovira za njihovo uporabo za razvijalce, ki so novi v strojnem učenju. Predloženih je bilo več predlogov za izboljšane in poenostavljene API-je na visoki ravni za gradnjo modelov nevronskih omrežij, ki so na videz podobni na daljavo, vendar pri natančnejšem pregledu pokažejo razlike.

Keras je eden vodilnih API-jev za nevronske mreže na visoki ravni. Napisan je v Pythonu in podpira več računalniških mehanizmov za vmesno nevronsko mrežo.

Keras in TensorFlow

Glede na to, da je projekt TensorFlow Keras sprejel kot API na visoki ravni za prihajajočo izdajo TensorFlow 2.0, se zdi, da je Keras a zmagovalec, če ne nujno zmagovalec. V tem članku bomo raziskali načela in izvajanje Kerasa, da bi razumeli, zakaj gre za izboljšanje API-jev za globoko učenje na nizki ravni.

Tudi v TensorFlow 1.12 uradna vadnica Uvod v uporabo TensorFlow uporablja visokokakovostni API Keras, vdelan v TensorFlow, tf.keras. Nasprotno pa TensorFlow Core API zahteva delo z računskimi grafi, tenzorji, operacijami in sejami TensorFlow, nekatere pa je težko razumeti, ko šele začnete delati s TensorFlowom. Uporaba nizkorazrednega API-ja TensorFlow Core ima nekaj prednosti, predvsem pri odpravljanju napak, na srečo pa lahko po potrebi mešate API-je TensorFlow na visoki in nizki ravni.

Kerasova načela

Keras je bil ustvarjen tako, da je uporabniku prijazen, modularen, enostaven za razširitev in za delo s Pythonom. API je bil "zasnovan za ljudi, ne za stroje" in "sledi najboljšim praksam za zmanjšanje kognitivne obremenitve."

Nevronske plasti, stroškovne funkcije, optimizatorji, inicializacijske sheme, aktivacijske funkcije in regularizacijske sheme so samostojni moduli, ki jih lahko kombinirate za ustvarjanje novih modelov. Nove module je enostavno dodati kot nove razrede in funkcije. Modeli so definirani v kodi Python in ne ločenih konfiguracijskih datotekah modela.

Zakaj Keras?

Največji razlogi za uporabo Kerasa izhajajo iz njegovih vodilnih načel, predvsem tistih o prijaznosti do uporabnika. Poleg enostavnega učenja in enostavnosti izdelave modelov ponuja Keras tudi prednosti širokega sprejemanja, podporo za široko paleto možnosti uvajanja proizvodnje, integracijo z vsaj petimi zalednimi motorji (TensorFlow, CNTK, Theano, MXNet in PlaidML), in močno podporo za več grafičnih procesorjev in porazdeljeno usposabljanje. Poleg tega Keras podpirajo Google, Microsoft, Amazon, Apple, Nvidia, Uber in drugi.

Keras se konča

Keras pravilno ne izvaja lastnih operacij na nizki ravni, kot so tenzorski izdelki in zvitki; pri tem se zanaša na zaledni motor. Čeprav Keras podpira več zalednih motorjev, je njegov primarni (in privzeti) zadnji del TensorFlow, njegov glavni podpornik pa Google. Keras API je pakiran v TensorFlow kot tf.keras, ki bo, kot smo že omenili, od TensorFlow 2.0 postal primarni API za TensorFlow.

Če želite spremeniti nazaj, preprosto uredite svoj $ HOME / .keras / keras.json datoteko in podajte drugo zaledno ime, na primer theano ali CNTK. Lahko pa tudi preglasite konfigurirani zadnji del z določitvijo spremenljivke okolja KERAS_BACKEND, bodisi v lupini bodisi v kodi Pythona z uporabo os.environ ["KERAS_BACKEND"] lastnine.

Modeli Keras

The Model je jedro podatkovne strukture Keras. Obstajata dve glavni vrste modelov, ki so na voljo v Kerasu: Zaporedni model in Model razred, ki se uporablja s funkcionalnim API-jem.

Keras Sekvenčni modeli

The Zaporedni Model je linearni sklad slojev, sloje pa je mogoče opisati zelo preprosto. Tu je primer iz dokumentacije Keras, ki uporablja model.add () za določitev dveh gostih plasti v a Zaporedni model:

uvoz keras

iz keras.models uvoz Sequential

iz keras.layers uvozi gosto

# Ustvari zaporedni model z gostimi plastmi z uporabo metode add

#Dense izvaja operacijo:

# output = aktivacija (pika (vhod, jedro) + pristranskost)

# Enote so dimenzionalnost izhodnega prostora za plast,

#, ki je enako številu skritih enot

# Funkcije aktivacije in izgube lahko določijo nizi ali razredi

model.add (gosto (enote = 10, aktivacija = "softmax"))

# Metoda prevajanja konfigurira proces učenja modela

optimizer = "sgd",

metrics = ['natančnost'])

# Metoda fit vadi v serijah

# x_train in y_train sta matriki Numpy - tako kot v Scikit-Learn API.

# Metoda ocene izračuna izgube in meritve

# za izurjeni model

# Metoda predvidevanja uporablja izurjeni model za vhodne podatke

# za ustvarjanje izhodov

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

Pripombe v zgornji kodi so vredne branja. Prav tako je treba omeniti, kako malo dejanske kode je v dejanski kodi v primerjavi z nizkimi API-ji TensorFlow. Vsaka definicija sloja zahteva eno vrstico kode, kompilacija (opredelitev učnega procesa) zavzame eno vrstico kode, namestitev (usposabljanje), vrednotenje (izračun izgub in meritev) ter napovedovanje rezultatov iz usposobljenega modela pa vsako vrstico kode .

Keras funkcijski API

Kerasov zaporedni model je preprost, vendar omejen po topologiji modelov. Funkcijski API Keras je uporaben za ustvarjanje kompleksnih modelov, kot so modeli z več vhodi / izhodi, usmerjeni aciklični grafi (DAG-ji) in modeli s skupnimi plastmi.

Funkcionalni API uporablja enake plasti kot zaporedni model, vendar zagotavlja večjo prilagodljivost pri njihovem sestavljanju. V funkcionalnem API-ju najprej definirate plasti, nato pa ustvarite Model, ga sestavite in prilagodite (usposobite). Vrednotenje in predvidevanje sta v bistvu enaki kot v zaporednem modelu, zato sta bili v spodnji vzorčni kodi izpuščeni.

iz keras.layers uvozi vhod, gosto

iz keras.models model uvoza

# To vrne tenzor

# primerek sloja je na tenzorju klicen in vrne tenzor

x = gosto (64, aktivacija = "relu") (x)

napovedi = gosto (10, aktivacija = "softmax") (x)

# To ustvari model, ki vključuje

# vhodna plast in tri goste plasti

model.compile (optimizer = 'rmsprop',

izguba = "categorical_crossentropy",

metrics = ['natančnost'])

model.fit (podatki, nalepke) # začne trenirati

Kerasove plasti

V prejšnjih primerih smo uporabili samo Gosta plasti. Keras ima širok izbor vnaprej določenih vrst slojev in podpira tudi pisanje lastnih slojev.

Jedrne plasti vključujejo Gosta (pikčast izdelek in pristranskost), Aktivacija (prenosna funkcija ali oblika nevrona), Osip (naključno nastavite del vhodnih enot na 0 pri vsaki posodobitvi treninga, da se izognete prekomerni opremi), Lambda (zaviti poljuben izraz kot Sloj predmet) in več drugih. Konvolucijske plasti (uporaba filtra za ustvarjanje zemljevida elementov) se izvajajo od 1D do 3D in vključujejo najpogostejše različice, kot so obrezovanje in prenesene konvolucijske plasti za vsako dimenzijo. Za prepoznavanje slik se običajno uporablja 2D zvitek, ki ga je navdihnila funkcionalnost vidne skorje.

Sloji združevanja (zmanjševanja skale) se izvajajo od 1D do 3D in vključujejo najpogostejše različice, kot sta največje in povprečno združevanje. Lokalno povezane plasti delujejo kot konvolucijske plasti, le da uteži niso deljene. Ponavljajoče se plasti vključujejo preproste (popolnoma povezane ponovitve), zaprte, LSTM in druge; ti so med drugim uporabni za obdelavo jezika. Plasti hrupa pomagajo preprečiti prekomerno opremljanje.

Nabori podatkov Keras

Keras dobavlja sedem najpogostejših vzorčnih naborov podatkovnih datotek prek keras.datasets razred. To vključuje majhne barvne slike cifar10 in cifar100, preglede filmov IMDB, Reutersove teme novic, ročno napisane številke MNIST, modne slike MNIST in cene stanovanj v Bostonu.

Keras aplikacije in primeri

Keras dobavlja tudi deset dobro znanih modelov, imenovanih Keras Applications, predhodno usposobljenih za ImageNet: Xception, VGG16, VGG19, ResNet50, InceptionV3, InceptionResNetV2, MobileNet, DenseNet, NASNet, MobileNetV2TK. S pomočjo njih lahko napovedujete klasifikacijo slik, iz njih izvlečete značilnosti in natančno nastavljate modele v različnih sklopih razredov.

Mimogrede, natančna nastavitev obstoječih modelov je dober način za pospešitev treninga. Na primer, lahko dodate sloje, kot želite, zamrznete osnovne sloje, da usposobite nove sloje, nato pa odmrznete nekatere osnovne plasti, da natančno prilagodite vadbo. Sloj lahko zamrznete z nastavitvijo plast.trainable = False.

Skladišče primerov Keras vsebuje več kot 40 vzorčnih modelov. Zajemajo modele vida, besedilo in zaporedja ter generativne modele.

Uvajanje Kerasa

Kerasove modele je mogoče uporabiti na številnih platformah, morda bolj kot kateri koli drug okvir globokega učenja. To vključuje iOS prek CoreML (podpira ga Apple); Android prek izvajalnega okolja Android TensorFlow; v brskalniku prek Keras.js in WebDNN; v storitvi Google Cloud prek storitve TensorFlow-Serving; v zadnjem delu spletnega mesta Python; na JVM prek uvoza modela DL4J; in na Raspberry Pi.

Če želite začeti s Kerasom, preberite dokumentacijo, si oglejte repozitorij kod, namestite TensorFlow (ali drug zaledni mehanizem) in Keras ter preizkusite Vodič za začetek za model Keras Sequential. Od tam lahko napredujete do drugih vadnic in sčasoma raziščete primere Keras.

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