You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Razvoj i evaluacija sopstvenog framework-a za duboko učenje pod nazivom CNN-CPP u programskom jeziku C++ od nule. Cilj projekta je kreiranje fleksibilnog i potpuno konfigurabilnog rešenja za klasifikaciju slika korišćenjem dubokih neuronskih mreža, uz poređenje performansi sa postojećim alatima poput TensorFlow-a.
Ključni ciljevi:
Razvoj modularnog i konfigurabilnog framework-a, koji omogućava:
Konvolucione slojeve sa prilagodljivim kernelima, stride parametrima i padding opcijama.
Batch normalizaciju za stabilizaciju i ubrzanje treninga.
Pooling slojeve (Max i Average pooling) za redukciju dimenzionalnosti.
Različite funkcije aktivacije, uključujući:
ReLU
Sigmoid
Tanh
Softmax
Leaky ReLU
ELU (Exponential Linear Unit)
Flatten sloj za pripremu podataka za potpuno povezane slojeve.
Potpuno povezane slojeve za finalnu klasifikaciju.
Konfigurabilnost na svim nivoima modela, uključujući:
Više tipova inicijalizacije za kernel-e, bias-e i težine (He, Xavier, random uniform).
Fleksibilnost u dizajnu modela, omogućavajući korisnicima da kreiraju arhitekture poput:
LeNet sa prilagodljivim brojem slojeva i filtera.
AlexNet za složenije probleme.
Sekvencijalni način kreiranja modela, identičan onom u TensorFlow-u (Sequential API).
Napredne tehnike treninga i optimizacije, uključujući:
ELRALES (Epoch Loss Recovery Adaptive Learning Early Stopping) za adaptivno učenje, koji omogućava modelu da u slučajevima kada loss raste izvan predefinisanih granica, vrati stanje trainable parametara na najuspešniju epohu do sada i koriguje stopu učenja, kao i da donese odluku o ranom zaustavljanju ako napretka u učenju više nema.
Gradient clipping za kontrolu eksplozije gradijenata.
Learning rate decay za postepeno smanjenje stope učenja, uključujući:
Eksponencijalni pad (Exponential Decay)
Stepenasti pad (Step Decay)
Polinomijalni pad (Polynomial Decay)
Pad u obrnutom vremenu (Inverse Time Decay)
Kosinusni pad (Cosine Decay)
Batch učenje sa podrškom za:
Balansirane batch-eve (uniformna raspodela kategorija po batch-u)
Nasumične batch-eve (pandam TF-u "Flow From Directory")
Podrška za višestruke optimizatore i njihovu konfiguraciju, uključujući:
SGD (Stochastic Gradient Descent).
SGD sa momentom.
Adam optimizator.
RMSprop.
Evaluacija performansi kroz:
Vizualizaciju metrika kao što su preciznost (accuracy) i gubitak (loss).
Poređenje sa TensorFlow-om, koristeći iste arhitekture i dataset-ove.
Numerička preciznost i efikasnost:
64-bitna preciznost za superiornu numeričku stabilnost u odnosu na 16-bitnu i 32-bitnu koju TF koristi.
Paralelizacija konvolucije na nivou slike za bolje iskorišćenje CPU resursa.
Augmentacija slika će biti implementirana sa podrškom za sledeće tehnike:
Skaliranje slike (Zoom in/out)
Horizontalno okretanje (Horizontal Flip)
Vertikalno okretanje (Vertical Flip)
Dodavanje Gaussian šuma (Add Gaussian Noise)
Primena Gaussian zamućenja (Gaussian Blur)
Shear transformacija (Shearing)
Normalizacija vrednosti piksela (Normalization)
Automatski one-hot encoding na osnovu strukture dataset-a:
Automatsko mapiranje kategorija u one-hot reprezentaciju na osnovu direktorijumske strukture dataset-a.
Detaljan matematički opis svih komponenti sistema:
Cilj projekta je pružiti sveobuhvatan matematički opis ključnih komponenti framework-a, uključujući konvolucione slojeve, batch normalizaciju, pooling slojeve, aktivacione funkcije, tehnike optimizacije, loss funkcije i druge elemente.
Doxygen dokumentacija:
Projekat će obuhvatiti generisanje Doxygen dokumentacije na osnovu komentara unutar C++ koda, čime će se omogućiti automatsko kreiranje detaljne tehničke dokumentacije. Dokumentacija će pokrivati strukturu koda, klase, metode, funkcije i parametre.
Poseban fokus projekta:
Postizanje fleksibilnosti i konfigurabilnosti na nivou arhitekture i parametara modela.
Poređenje performansi framework-a CNN-CPP sa TensorFlow-om na identičnim modelima i konfiguraciji, uključujući preciznost, vreme treninga i stabilnost učenja.
Praktična primena na dataset-ovima poput CIFAR-10 i MNIST, uz demonstraciju prednosti u performansama i kontroli treninga.
The text was updated successfully, but these errors were encountered:
kolemare
changed the title
Razvoj sopstvenog framework-a za duboko učenje u C++ jeziku: Evaluacija performansi i primena na problemu klasifikacije slika
Razvoj sopstvenog framework-a za duboko učenje u C++ jeziku
Dec 5, 2024
Tim:
Marko Kostić E9 2/2023
Github Repository:
CNN-CPP
Definicija Problema:
Razvoj i evaluacija sopstvenog framework-a za duboko učenje pod nazivom CNN-CPP u programskom jeziku C++ od nule. Cilj projekta je kreiranje fleksibilnog i potpuno konfigurabilnog rešenja za klasifikaciju slika korišćenjem dubokih neuronskih mreža, uz poređenje performansi sa postojećim alatima poput TensorFlow-a.
Ključni ciljevi:
Razvoj modularnog i konfigurabilnog framework-a, koji omogućava:
Konfigurabilnost na svim nivoima modela, uključujući:
Sequential
API).Napredne tehnike treninga i optimizacije, uključujući:
Podrška za višestruke optimizatore i njihovu konfiguraciju, uključujući:
Evaluacija performansi kroz:
Numerička preciznost i efikasnost:
Augmentacija slika će biti implementirana sa podrškom za sledeće tehnike:
Automatski one-hot encoding na osnovu strukture dataset-a:
Detaljan matematički opis svih komponenti sistema:
Doxygen dokumentacija:
Poseban fokus projekta:
The text was updated successfully, but these errors were encountered: