TensorFlow je Googleov vrhunski okvir za strojno učenje, a svaka nova verzija donosi širok raspon mogućnosti i značajki. Nakon što se popnete na krivulju učenja, možete pisati sofisticirane aplikacije za strojno učenje i izvršavati ih velikom brzinom.
Ali podizanje krivulje učenja nije lako — s velikom snagom dolazi i velika složenost. Kako biste vam pomogli u usponu, morate biti svjesni tipova podataka TensorFlow, uslužnog programa TensorBoard i implementacije aplikacija na Googleov stroj Machine Learning Engine.
Osnovni tipovi podataka u TensorFlowu
TensorFlow aplikacije možete pisati na više različitih jezika, kao što su Python, C++ i Java. No, bez obzira koji jezik koristite, morate biti upoznati s nizom tipova podataka specifičnih za TensorFlow:
- Tenzori i rezervirana mjesta: Tenzor je instanca klase Tensor i služi kao višedimenzionalni niz opće namjene. Rezervoar mjesta je također Tensor, ali umjesto da se inicijalizira u kodu, prima podatke iz sesije koji će biti valjani tijekom jednog izvršavanja sesije. Čuvari mjesta omogućuju ažuriranje sadržaja tenzora od jednog izvršavanja sesije do sljedećeg.
- Grafovi: Graf je spremnik sličan popisu ili torci. Samo jedan graf može biti aktivan istovremeno, a kada kodirate operaciju koja prihvaća tenzore ili varijable, tenzori, varijable i operacija pohranjuju se kao elementi u grafu. Kada kreirate optimizator i pozovete njegovu metodu minimiziranja, TensorFlow pohranjuje rezultirajuću operaciju u graf.
- Sjednice . Grafovi pohranjuju operacije, ali ne mogu sami izvoditi operacije. Umjesto toga, trebate stvoriti sesiju i pozvati njenu metodu pokretanja. Ako pozovete run s tenzorom ili operacijom, metoda će izvršiti operacije u grafu potrebne za dobivanje željenog rezultata.
- Optimizatori . Cilj strojnog učenja je precizirati matematički model stvarnog sustava sve dok ne bude nalik sustavu što je više moguće. Ovaj proces dorade naziva se optimizacija, a istraživači su osmislili mnoge metode optimizacije. TensorFlow podržava mnoge od ovih algoritama i pruža klasu optimizatora za svaki. Bez obzira na klasu, možete dobiti operaciju optimizacije pozivanjem optimizatorove metode minimiziranja.
- Varijable . Za razliku od tenzora i rezerviranih mjesta, varijabla je instanca klase Variable. Njegova je primarna svrha sadržavati podatke koji se ažuriraju tijekom procesa optimizacije. Na primjer, ako vaša aplikacija modelira sustav s ravnom linijom, pohranit ćete nagib linije i y -presjek kao varijable. Ali prije nego što možete koristiti varijable za optimizaciju modela, morate stvoriti i izvršiti posebne inicijalizacijske operacije.
- Procjenitelji . Ako se ne želite baviti strukturama podataka niske razine poput sesija i grafikona, možete izvršiti algoritme strojnog učenja pomoću TensorFlow-ovog Estimator API-ja. Procjenitelj je instanca klase Estimator, a svaki alat za procjenu utjelovljuje algoritam strojnog učenja. Glavna prednost korištenja procjenitelja je ta što svi imaju iste tri metode za pokretanje procesa strojnog učenja: trenirati, evaluirati i predviđati.
Kako koristiti TensorBoard u TensorFlowu
Kada instalirate TensorFlow, instalacijski program također nudi uslužni program naredbenog retka pod nazivom TensorBoard. Time se generiraju dijagrami koji vam omogućuju vizualizaciju rada vaše TensorFlow aplikacije. TensorBoard olakšava pronalaženje pogrešaka u vašim programima, ali nije jednostavan za korištenje. Za generiranje podataka i prikaz dijagrama u TensorFlowu, trebate izvesti šest koraka:
Izradite operacije sažetka.
Prije nego što možete vidjeti podatke u TensorBoardu, morate identificirati podatke koji će se prikazati stvaranjem posebnih operacija koje se nazivaju operacije sažetka. Ove operacije možete kreirati pozivanjem funkcija paketa tf.summary. Na primjer, možete stvoriti operaciju sažetka za jednu vrijednost pozivanjem tf.summary.scalar. Možete stvoriti operaciju sažetka za niz vrijednosti pozivanjem tf.summary.histogram. Možete kombinirati operacije zajedno pozivanjem funkcije kao što je tf.summary.merge_all.
Izvršite operacije sažetka.
Nakon što izradite jednu ili više operacija sažetka, možete dobiti sažete podatke izvršavanjem operacija u sesiji. Kao rezultat, sesija će vratiti međuspremnik protokola koji sadrži sažete podatke aplikacije.
Napravite FileWriter.
Prije nego što možete ispisati sažete podatke u datoteku, morate stvoriti FileWriter pozivanjem tf.summary.FileWriter. Ovaj konstruktor prihvaća mnoge argumente, ali jedini potrebni argument je ime direktorija koji sadrži sažete podatke.
Ispišite sažetak podataka.
Klasa FileWriter nema jednostavnu metodu ispisa. Umjesto toga, trebate pozvati FileWriterovu add_summary metodu za ispis sažetih podataka u datoteku. Ova metoda zapisuje datoteku događaja u direktorij naveden u konstruktoru FileWriter. Nakon što ispišete podatke, dobra je ideja pozvati metodu close FileWritera kako biste uništili instancu.
Pokrenite TensorBoard.
Nakon što instalirate TensorFlow, uslužni program tensorboard pojavljuje se u direktoriju skripti najviše razine. Možete pokrenuti uslužni program tako da izvršite naredbu tensorboard i postavite opciju logdir na ime direktorija koji sadrži sažete podatke. Na primjer, ako se sažeti podaci nalaze u izlaznom direktoriju, TensorBoard možete pokrenuti izvršavanjem tensorboard –logdir=output u retku za naredbe.
Pregledajte TensorBoard u pregledniku.
Nakon što pokrenete uslužni program TensorBoard, možete vidjeti njegovo sučelje otvaranjem preglednika. Zadani URL je http://localhost:6006, ali to možete konfigurirati postavljanjem opcija hosta i porta u naredbi tensorboard.
Kako pokrenuti TensorFlow u oblaku
Najbolji razlog za korištenje TensorFlowa za strojno učenje je taj što možete pokrenuti svoje aplikacije u oblaku. Točnije, možete implementirati TensorFlow programe na Machine Learning (ML) Engine, koji Google čini dostupnim kao dio Google Cloud Platforme (GCP). Ovaj proces implementacije sastoji se od sedam koraka:
Izradite projekt Google Cloud Platforme.
Kada radite s GCP-om, projekt služi kao središnji spremnik konfiguracijskih postavki i izvornih datoteka. Možete stvoriti novi projekt tako da posjetite platformu Google Cloud , kliknete Odaberi projekt i kliknete gumb plus u dijaloškom okviru Odaberi. Možete odabrati naziv svog projekta, ali GCP postavlja ID projekta, koji je jedinstven među svim GCP projektima.
Omogućite pristup ML Engineu.
Svaki novi GCP projekt može pristupiti brojnim Googleovim mogućnostima, uključujući Datastore i Cloud Storage. Ali prema zadanim postavkama, GCP projekti ne mogu implementirati aplikacije na ML Engine. Da biste omogućili pristup, otvorite izbornik u gornjem lijevom dijelu stranice projekta, odaberite API-ji i usluge, a zatim kliknite Knjižnica. Kliknite vezu pod nazivom Google Cloud Machine Learning Engine, a zatim kliknite gumb OMOGUĆI.
Instalirajte Cloud Software Development Kit (SDK).
GCP-u možete pristupiti iz naredbenog retka instaliranjem Googleovog Cloud SDK-a . Da biste ovo preuzeli, kliknite odgovarajuću vezu za svoj operativni sustav. Kada instalacija završi, moći ćete pristupiti SDK-u pokretanjem gcloud naredbi u naredbenom retku.
Prenesite podatke o obuci/predviđenju u Cloud Storage.
ML Engine može pristupiti vašim podacima o obuci/predviđenju samo ako ih prenesete u Googleovu pohranu u oblaku. S Cloud Storageom možete komunicirati iz naredbenog retka putem uslužnog programa gsutil koji pruža Cloud SDK. Podaci Cloud Storagea sadržani su u strukturama sličnim direktoriju koje se nazivaju buckets, a kada prenesete datoteku u spremnik, struktura podataka naziva se objekt.
Dodajte modul setup.py u paket svoje aplikacije.
Da biste Python aplikaciju učinili dostupnom ML Engineu, trebate je strukturirati kao paket. Svaki paket mora imati modul setup.py u direktoriju najviše razine. Ovaj modul treba osigurati kod za setuptools.setup, koji pruža informacije o konfiguraciji ML Engineu.
Pokrenite posao obuke za ML Engine.
Da biste trenirali svoj model u oblaku, morate pokrenuti posao obuke pokretanjem gcloud ml-engine poslovi predati obuku s odgovarajućim opcijama. Opcije uključuju --package-path, koji identificira lokaciju paketa, --module-name, koji daje naziv Python modula, i –job-dir, koji govori ML Engine-u gdje treba pohraniti izlaz. Kada se obuka završi, ML Engine će proizvesti SavedModel koji sadrži rezultate obuke.
Pokrenite posao predviđanja za ML Engine.
Nakon što nabavite SavedModel, možete koristiti ML Engine za izvođenje predviđanja pokretanjem gcloud ml-engine poslova podnošenja predviđanja s odgovarajućim opcijama. Opcije uključuju --input-paths, koji identificira lokaciju ulaznih datoteka projekta, --data-format, koji govori ML Engine-u kako su formatirani ulazni podaci, i --output-path, koji identificira gdje bi trebao biti izlaz predviđanja biti pohranjeni.