Deep Learning with Keras: Training Neural Network With Keras [Cu cod]

Publicat: 2020-12-24

Keras este o bibliotecă Python care oferă un API pentru a lucra cu rețele neuronale și cadre de învățare profundă. Keras oferă funcții și module care sunt extrem de utile atunci când aveți de-a face cu diverse aplicații Deep Learning în Python.

Până la sfârșitul acestui tutorial, veți avea cunoștințele despre următoarele:

  1. Ce este Keras?
  2. API-urile Keras
  3. Antrenarea unei rețele neuronale în Keras

Cuprins

Ce este Keras?

Pentru a face Deep Learning, cea mai folosită bibliotecă anterior a fost Tensorflow 1.x, care a fost greu de tratat pentru începători. A necesitat multă codare pentru a face doar o rețea de bază cu 1 strat. Cu toate acestea, cu Keras, procesul complet de realizare a structurii unei rețele neuronale și apoi antrenament și urmărire a devenit extrem de ușor.

Keras este un API de nivel înalt care poate rula pe backend Tensorflow, Theano și CNTK. Ne oferă posibilitatea de a rula experimente folosind rețele neuronale folosind API de nivel înalt și ușor de utilizat. De asemenea, este capabil să ruleze pe procesoare și GPU.

API-urile Keras

Keras are 10 module API diferite menite să gestioneze modelarea și antrenarea rețelelor neuronale. Să trecem peste fiecare dintre ele pentru a înțelege ce are de oferit Keras.

Modele

API-ul Models oferă funcționalitatea de a construi rețele neuronale complexe prin adăugarea/eliminarea de straturi. Modelul poate fi fie secvenţial, adică straturile vor fi stivuite secvenţial cu o singură intrare şi ieşire. Modelul poate fi si functional, adica cu modele complet personalizabile. Acesta este cel mai folosit în industrie.

API-ul are, de asemenea, modulul de antrenament care furnizează metode de compilare a modelului împreună cu optimizatorul și funcția de pierdere, o metodă de a se potrivi modelului, o metodă de a evalua și de a prezice și date noi. Mai mult, are și metode de instruire, testare și predicție pe un lot de date. Models API are, de asemenea, salvarea și serializarea modelelor.

Straturi

Straturile sunt elementele de bază ale oricărei rețele neuronale. API-ul Layers oferă un set complet de metode pentru construirea arhitecturii rețelei neuronale. API-ul Layers are clasa Base Layer care conține metode necesare pentru a construi straturi personalizate cu greutăți și inițializatoare personalizate.

Conține clasa Layer Activations care constă din diferite funcții de activare, cum ar fi ReLU, Sigmoid, Tanh, Softmax, etc. Clasa Layer Weight Initializers oferă metode de inițializare a greutăților folosind diferite moduri.

De asemenea, constă din clasa Core Layers, care constă din clase necesare pentru a adăuga straturi de bază, cum ar fi stratul dens, stratul de activare, stratul de încorporare etc. Clasa Strat de convoluție oferă diferite metode pentru a adăuga diferite tipuri de straturi de convoluție. Clasa Straturi de pooling conține metodele necesare pentru diferite tipuri de pooling, cum ar fi Pooling maxim, Pooling mediu, Pooling maxim global și Pooling mediu global.

Reapeluri

Apelurile inverse sunt o modalitate de a urmări procesul de antrenament al modelului. Cu funcția Callback activată, pot fi efectuate diverse acțiuni înainte sau după sfârșitul unei epoci sau a unui lot. Cu apeluri inverse puteți:

  • Monitorizați valorile de antrenament înregistrând valorile în TensorFlow Board
  • Salvarea periodică a modelului pe disc
  • Oprire timpurie în cazul în care pierderea nu scade semnificativ după anumite epoci
  • Vizualizați stările interne și statisticile unui model în timpul antrenamentului

Preprocesarea setului de date

Datele sunt de obicei în format brut și se află în directoare aranjate și trebuie preprocesate înainte de a fi transmise modelului pentru montare. Clasa de preprocesare a datelor de imagine are multe astfel de funcții dedicate. De exemplu, datele imaginii trebuie să fie în matricea numerică pentru care putem folosi funcția img_to_array. Sau dacă imaginile sunt prezente în interiorul unui director și subdosare, putem folosi funcția image_dataset_from_directory.

Data Preprocessing API are, de asemenea, clase pentru datele din seria temporală și datele text.

Optimizatori

Optimizatoarele sunt coloana vertebrală a oricărei rețele neuronale. Fiecare rețea neuronală lucrează la optimizarea unei funcții de pierdere pentru a găsi cele mai bune ponderi pentru predicție. Există mai multe tipuri de optimizatori care urmează tehnici ușor diferite pentru a găsi greutăți optime. Toate aceste optimizatoare sunt disponibile în API-ul Optimizers – SGD, RMSProp, Adam, Adadelta, Adagrad, Adamax, Nadal, FTRL.

Pierderi

Este necesar ca funcțiile de pierdere să fie specificate la compilarea unui model. Această funcție de pierdere ar fi optimizată de optimizator care a fost trecut și ca parametru în metoda de compilare. Cele trei clase principale de pierderi sunt: ​​Pierderi probabilistice, Pierderi de regresie, Pierderi prin balamale.

Metrici

Valorile sunt utilizate în fiecare model ML pentru a-și cuantifica performanța pe datele de testare. Valorile sunt similare cu funcțiile de pierdere, cu excepția faptului că sunt utilizate pe datele de testare. Există multe metrici de acuratețe disponibile, cum ar fi acuratețea, acuratețea binară, acuratețea categorială etc. Conține, de asemenea, metrici probabilistice, cum ar fi Entropia încrucișată binară, Entropia încrucișată categorială etc. Există metrici pentru verificarea pozitive/negative false precum AUC, Precizie, rechemare etc.

În afară de aceste valori de clasificare, are și măsurători de regresie, cum ar fi Eroare pătratică medie, Eroare pătrată medie rădăcină, Eroare medie absolută etc.

Citiți și: Ce este despre Keras și TensorFlow

Aplicații Keras

Clasa Keras Applications constă din câteva modele prefabricate împreună cu greutăți pre-antrenate. Aceste modele pre-instruite sunt utilizate pentru procesul de învățare prin transfer. Aceste modele pre-antrenate sunt diferite în funcție de arhitectură, numărul de straturi, greutățile antrenabile etc. Unele dintre ele sunt Xception, VGG16, Resnet50, MobileNet etc.

Antrenarea unei rețele neuronale cu Keras

Să luăm în considerare un set de date simplu, cum ar fi MNIST, care este disponibil în clasa seturi de date din Keras. Vom realiza o rețea neuronală convoluțională secvențială simplă pentru clasificarea imaginilor scrise de mână ale cifrelor 0-9.

#Se încarcă setul de date

din keras.datasets import mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()

Normalizarea setului de date prin împărțirea fiecărui pixel la 255. De asemenea, este necesar să se transforme imaginile în 4 dimensiuni înainte de a le furniza unui model CNN.

x_train = x_train.astype( 'float32' )
x_test = x_test.astype( 'float32' )
x_tren /= 255
x_test /= 255

x_train = X_train.reshape(X_train.shape[ 0 ], 28 , 28 , 1 )
x_test = X_test.reshape(X_test.forma[ 0 ], 28 , 28 , 1 )

Trebuie să etichetăm codificarea claselor înainte de a le transmite modelului. Vom face asta folosind clasa Utils a lui Keras.

din keras.utils import to_categorical


y_train = la_categoric(y_train, 10 )
y_test = la_categoric(y_test, 10 )

Acum, putem începe să creăm modelul folosind Sequential API.

din keras.models import Sequential
din keras.layers import Conv2D, MaxPool2D, Dense, Flatten, Dropout model = Sequential() model.add(Conv2D(filters= 32 , kernel_size=( 5 , 5 ), activation= 'relu' , input_shape=x_train.shape[ 1 :]))
model.add(MaxPool2D(pool_size=( 2 , 2 )))
model.add(Dropout(rata= 0,25 ))
model.add(Conv2D(filters= 64 , kernel_size=( 3 , 3 ), activation= 'relu' ))
model.add(MaxPool2D(pool_size=( 2 , 2 )))
model.add(Dropout(rata= 0,25 ))
model.add(Aplatizare())
model.add(Dense( 256 , activation= 'relu' ))
model.add(Dropout(rata= 0,5 ))
model.add(Dense( 10 , activation= 'softmax' ))

În codul de mai sus, declarăm un model secvenţial și apoi îi adăugăm mai multe straturi. Stratul convoluțional, urmat de un strat de Max Pooling și apoi de un strat de abandon pentru regularizare. Mai târziu, aplatizăm rezultatul folosind stratul de aplatizare, iar ultimul strat este un strat dens complet conectat cu 10 noduri.

Apoi, trebuie să-l compilam trecând funcția de pierdere, optimizatorul și metrica.

model.compile(
loss= 'categoric_crossentropy' ,
optimizator= 'adam' ,
metrics=[ „acuratețe” ]
)

Acum ar trebui să adăugăm imagini augmentate din imaginile originale pentru a crește setul de antrenament și precizia modelului. Vom face asta folosind funcția ImageDataGenerator.

din keras.preprocessing.image import ImageDataGenerator

datagen = ImageDataGenerator(
interval_rotație= 10 ,
zoom_range= 0,1 ,
width_shift_range= 0,1 ,
interval_deplasare_înălțime= 0,1
)

Acum că modelul este compilat și imaginile au fost mărite, putem începe procesul de antrenament. Deoarece am folosit un generator de date de imagine de mai sus, vom folosi metoda fit_generator mai degrabă decât potrivirea.

epoci = 3
batch_size = 32
istoric = model.fit_generator( datagen.flow(x_train, y_train, batch_size=batch_size), epochs=epochs,
validation_data=(x_test, y_test), steps_per_epoch=x_train.shape[ 0 ]//batch_size )

Rezultatul procesului de instruire este următorul:

3Acum, modelul este antrenat și poate fi evaluat rulându-l pe date de testare nevăzute.

Citiți similare: Învățare profundă și rețele neuronale cu Keras

Inainte sa pleci

În acest tutorial, am văzut cât de bine este structurat Keras și facilitează construirea unei rețele neuronale complexe. Keras este acum împachetat sub Tensorflow 2.x, ceea ce îi oferă și mai multe caracteristici. Încercați mai multe astfel de exemple și explorați funcțiile și caracteristicile Keras.

Dacă sunteți interesat să aflați mai multe despre învățarea automată, consultați Diploma PG de la IIIT-B și upGrad în Învățare automată și AI, care este concepută pentru profesioniști care lucrează și oferă peste 450 de ore de pregătire riguroasă, peste 30 de studii de caz și sarcini, IIIT- B Statut de absolvenți, peste 5 proiecte practice practice și asistență pentru locuri de muncă cu firme de top.

Conduceți revoluția tehnologică condusă de inteligența artificială

DIPLOMĂ PG ÎN ÎNVĂȚAREA MACHINĂ ȘI INTELIGENTĂ ARTIFICIALĂ DE LA IIIT BANGALORE
Aflați mai multe