Ajutați dezvoltarea site -ului, împărtășind articolul cu prietenii!

Introducere la Caffe Deep Learning

Caffe, un cadru de deep learning popular și open-source a fost dezvoltat de Berkley AI Research. Este foarte expresibil, modular și rapid. Are o documentație open-source bogată disponibilă pe Github. Este utilizat pe scară largă în proiecte de cercetare academică, în dovezile de concepte ale startup-urilor, viziunea computerizată, procesarea limbajului natural etc.

Cadru Caffe Deep Learning

Acesta înseamnă Convolutional Architecture for Fast Feature Embedding și este scris în biblioteca C++ cu licență BSD cu legături Python și MATLAB.Este folosit pentru antrenarea și implementarea eficientă a rețelelor neuronale de convoluție de uz general pe arhitecturi de marfă. Arhitectura cadrului de mai sus este împărțită în general în următoarele:

1. Stocarea datelor

Folosește date matrice N-dimensionale într-o manieră C-contiguă numită blob pentru a stoca și a comunica date. Blobul poate fi gândit ca un strat de abstractizare între CPU și GPU. Datele de la CPU sunt încărcate în blob-ul care este apoi trecut la GPU pentru calcul. Sub capotă, blob-ul folosește o clasă SyncedMem pentru a sincroniza valorile dintre CPU și GPU. Blob-ul este apoi mutat în stratul următor fără a lua în considerare detaliile inferioare de implementare, menținând un nivel ridicat de performanță. Pentru o utilizare eficientă a memoriei, se folosește o tehnică de alocare a cererii leneșe pentru a aloca memorie la cerere pentru gazdă și dispozitiv. Pentru date la scară mare, sunt utilizate bazele de date LevelDB.Modelele Deep Learning sunt stocate în spațiul de stocare secundar ca Google Protocol Buffers, care oferă serializare eficientă, format text care poate fi citit de om etc.

2. Straturi

Blobul-urile sunt transmise ca intrare și, în mod corespunzător, este generată. Urmează o relație de la mulți la mulți. Are următoarele responsabilități cheie ca parte a operațiunilor model:

  • Configurare: Inițializează stratul și conexiunile de bază pentru prima dată în timpul inițializării modelului.
  • Forward Pass: Intrările sunt transmise și, în mod corespunzător, sunt generate ieșirile.
  • Backward Pass: Calculul gradienților în raport cu rezultatul, hiperparametrii modelului și intrările care sunt apoi transmise straturilor ulterioare utilizând o tehnică numită back-propagation.

Oferă diferite setări de straturi, cum ar fi Convolution, Pooling, activări neliniare, cum ar fi unități liniare rectificate (ReLU) cu pierderi de optimizare utilizate pe scară largă, cum ar fi Log Loss, R-squared, SoftMax etc.Straturile pot fi extinse la o nouă implementare personalizată a stratului utilizator folosind construcția compozițională a rețelelor.

3. Rețele și modelul de rulare subiacent

Folosește o structură de date numită grafic aciclic direcționat pentru stocarea operațiunilor efectuate de straturile subiacente, asigurând astfel corectitudinea trecerilor înainte și înapoi. O rețea tipică model Caffe începe cu un strat de date care încarcă date de pe un disc și se termină cu un strat de pierdere bazat pe cerințele aplicației. Poate fi rulat pe un CPU/GPU, iar comutarea între ele este fără întreruperi și independentă de model.

4. Formarea unei rețele

Un model tipic Caffe este antrenat de un algoritm rapid și standard de coborâre a gradientului stocastic. Datele pot fi procesate în mini-loturi care trec în rețea secvenţial. Parametrii importanți legați de antrenament, cum ar fi programele de scădere a ratei de învățare, impulsul și punctele de control pentru oprire și reluare, sunt bine implementați cu o documentație amănunțită.De asemenea, acceptă reglarea fină, o tehnică în care un model existent poate fi utilizat pentru a susține noi arhitecturi sau date. Greutățile modelului anterior sunt actualizate pentru noua aplicație și sunt atribuite greutăți noi oriunde este necesar. Această tehnică este utilizată pe scară largă în multe aplicații de învățare profundă din lumea reală.

Beneficiile cadrului Caffe Deep Learning

Oferă un set complet de pachete pentru tren, testare, reglaje fine și implementare a modelului. Oferă multe exemple ale sarcinilor de mai sus. Anterior, era folosit pentru sarcini de vedere, dar acum a fost adoptat pentru alte aplicații de învățare profundă, cum ar fi recunoașterea vorbirii, rețelele neuronale, robotica de către utilizatorii săi. Poate fi rulat în platforme bazate pe cloud, cu comutare fără întreruperi de platformă.

  1. Modularitate: Sunt posibile extensii la date noi, straturi și funcții de optimizare a pierderilor. Are exemple de referință care au straturi și funcții de pierdere implementate.
  2. Viteză: Poate fi folosit pentru a procesa 60 de milioane de imagini pe zi folosind GPU NVIDIA CUDA K40. Este una dintre cele mai rapide implementări de convnet disponibile pe piață.
  3. Arhitectura și implementarea straturilor: Definițiile modelului sunt scrise folosind Protocol Buffer Language sub formă de fișiere de configurare. Arhitectura de rețea folosește abordarea grafului aciclic direcționat. Când modelul este instanțiat, acesta își rezervă o memorie exactă conform cerințelor modelului. Trecerea de la un mediu bazat pe CPU la un mediu GPU necesită un singur apel de funcție.
  4. Acoperire test: Fiecare modul din acesta este testat, iar proiectul său open-source nu permite comiterea niciunui modul fără testele corespunzătoare, permițând astfel îmbunătățiri rapide și refactorizarea bazei de cod. Astfel, aceasta crește capacitatea de întreținere a acestuia, relativ lipsită de erori/defecte.
  5. Suport Python și MATLAB în stratificare: Oferă o interfață și ușurință de utilizare cu cadrul de cercetare existent utilizat de instituțiile științifice.Ambele limbi pot fi folosite pentru construirea rețelei și clasificarea intrărilor. Python în Layering permite, de asemenea, utilizarea modulului de rezolvare pentru dezvoltarea de noi tehnici de antrenament și o utilizare ușoară.
  6. Modele pregătite anterior utilizate ca referință: Oferă modele de referință pentru cercetare și proiecte științifice, cum ar fi modelele de referință pregătite ImageNet etc. Astfel, oferă o componentă software comună care poate fi extins pentru un progres rapid în dezvoltarea arhitecturilor model pentru aplicații din lumea reală.

Este diferit de celel alte cadre CNN contemporane în următoarele:

  • Implementarea este în mare parte bazată pe C++, astfel încât este ușor de integrat în sistemele C++ existente și interfețele comune din industrie. De asemenea, modul CPU elimină bariera pentru necesitatea unei platforme hardware specializate pentru implementarea modelului și experimente odată ce modelul este antrenat.
  • Modelele de referință sunt furnizate de pe raft pentru experimentare rapidă cu rezultate de ultimă generație. Astfel, reduce costurile de reînvățare.

Concluzie

Cadrul de învățare profundă Caffe evoluează continuu, deoarece este open-source și bine documentat. Depozitul său Github a fost bifurcat de mulți dezvoltatori. Astfel, există multe schimbări semnificative care au contribuit la aceasta. Recent, a fost dezvoltat Caffe 2, care este integrat cu depozitul GitHub de învățare profundă PyTorch.

Ajutați dezvoltarea site -ului, împărtășind articolul cu prietenii!