To je repozitorij v katerem shranjujem kodo in "tutoriale", ki sem jih izdelal tekom svojega učenja tega področja.
Uporabljam:
- OS: Ubuntu 16.04
- Programski jezik: Python
- Knjižnice:
- Tensorflow-gpu
- Keras
- gym
Preživetje na Titaniku povezava
Kratek opis:
Osnovna nevronska mreža za napovedovanje preživelih oseb na titaniku. Nabor podatkov pridobljen na spletni platformi Kaggle, kjer je to eno izmed začetniških tekmovanj.
Vsebuje opis in pokomentirano kodo.
Klasifikacija ročno napisanih števil povezava
Kratek opis:
Začetni primer konvolucijske nevronske mreže in vuzalizacije ter nadzorovanja procesa učenja s pomočjo orodja Tensorboard. Klasifikacija se izvaja na najbolj prepoznavnem naboru podatkov za klasifikacijo slik, MNIST handwritten digits.
Vsebuje opis in pokomentirano kodo.
Klasifikacija slik v 10 razredov povezava
Kratek opis:
Nadgradnja zgornjega modela. Prehod iz 2-D konvolucije na 3-D konvolucijo s pomočjo nabora podatkov CIFAR-10.
V direktoriju najdemo dva modela: 2-D model uporablja črno-bele slike, 3-D model pa originalne barvne slike.
Vsebuje pokomentirano kodo.
Alternativni model klasifikacije s knjižnico Keras povezava
Kratek opis:
Klasifikator ročno zapisanih števil nabora podatkov MNIST z uporabo visoko nivojske knjižnice Keras. Knjižnica drastično poenostavi implementacijo modela z upoštevanjem dobrih praks, a hkrati omogoča kasnejše fine nastavitve.
Vsebuje opis in pokomentirano kodo.
Klasifikator sintetičnih časovno odvisnih podatkov povezava
Kraterk opis:
Ponavljajoče nevronske mreže dosegajo najboljše natančnosti pri časnovno odvisnih podatkih, saj so zgrajene tako, da imitirajo dolg kratkotrajen spomin.
To je dvodelni začetni primer takšne nevronske mreže, ki se uči na sintetičnih podatkih.
Vsebuje pokomentirano kodo.
Klasifikator ročno napisanih števil povezava
Kraterk opis:
Štiri različne implementacije modelov ponavljajoče nevronske mreže na že znanem naboru podatkov MNIST.
Implementacije se med seboj razlikujejo po uporabi različnih (delov) knjižnic Tensorflow in Keras. Tukaj sem iskal najboljši način za implementacijo modelov.
Preizkusil sem:
- Osnovni Tensorflow,
- uporabo Tensorflow contrib rnn (tf.contrib.rnn),
- uporabo Tensorflow contrib keras (tf.contrib.keras)
Trenutno se mi zdi najbolj uporabna knjižnica Keras z jedrom Tensorflow, kmalu bo knjižnica tf.contrib.keras (kasneje le tf.keras) zamenjala uporabo knjižnice keras a še nismo tam.
Vsebuje opis in pokomentirano kodo.
Klasifikator filmskih opisov povezava
Kratek opis:
Knjižnica Keras ima nekaj že implementiranih naborov podatkov (npr. MNIST, CIFAR-10, CIFAR-100), za njih najdemo vse potrebne funkcije za pred-procesiranje podatkov, kar pospeši učni proces. Med njimi je tudi nabor podatkov filmskih opisov spletne strani IMDB. Ti so že vektorizirani. Kot oznake so klasificirani med pozitivne in negativne.
S tem naborom podatkov je naučen model ponavljajoče nevronske mreže, ki oceni nek vektoriziran filmski opis ali je pozitiven ali negativen.
Vsebuje opis in pokomentirano kodo.
Napovedovanje cene Bitcoinov povezava
Kratek opis:
Ko razmišljamo o časnovno odvisnih naborih podatkov hitro pridemo do cene delnic ali spletnih valut. Tukaj sem s pomočjo ponavljajoče nevronske mreže poizkušal napovedati vrednost valute Bitcoin. Model še potrebuje dodatne nastavitve za boljšo natančnost in še ni uporaben za trgovanje.
Zraven visokega cilja, napovedati ceno Bitcoina, je model nastevlnjen tako, da ga lahko testiramo na preprostejših ciljih (npr. napovedati vrednosti zaporedja števil, funkcijo sinus).
Vsebuje opis in pokomentirano kodo.
Samodejni kodirnik za raočno zapisana števila povezava
Kratek opis:
Samodejn kodirnik (ang. autoencoder) je tip nevronske mreže, ki se uporablja za ustvarjanje slik, glasbe in za samodejno klasifikacijo nabora podatkov. Sestavljen je iz dveh delov, kodirnega in dekodirnega dela, ki pa sta enaka, le da je zaporedje slojev obrnjeno. Tako lahko uporabimo vse, do sedaj znane, nevronske mreže za njegovo implementacijo.
Kot primer, sem implementiral dva samodejna kodirnika, enega na osnovi navadne nevroneke mreže in drugega na osnovi konvolucijske nevronske mreže.
Ker pa je prvi primer nenadzorovanega učenja uporabim, že dobro znan naboru podatkov MNIST. Zaenkrat še ima model težave z neenakomerno porazdelitvijo slik v razrede, se pa nauči ločiti določene oblike, (npr. ukrivljan črta -št. 0, 2, 6, 8, 9, ravna črta št. 1,4,7).
Vsebuje opis in pokomentirano kodo.
- Dokončati STS sintetic (sintetični primer sequence to sequence modela - kvadratne funkcije, polinomi, kvadratne funkcije iz poljubne strani, polinomi iz poljubne strani).
- Poizkati dober nabor podatkov za implementacijo STS modela.
- Implementirati STS model na zgoraj pridobljenem naboru podatkov.
- Implementirati SIS model na naboru podatkov GPS-tracks (napovedovanje zaporedja naslednjih gps točk).
- Implementacija Q-learning modela za reševanje diskretnih RL nalog.
- primer Open AI gym CartPole-v0
- Implementacija DDPG (deep deterministic policy gradient) odela za reševanje zveznih RL nalog.
- primer Open AI gym MountainCarContinuous-v0
Projekt sofinancirata Republika Slovenija in Evropska unija iz Evropskega socialnega sklada.