TensorFlow je Googlov vrhunski okvir za strojno učenje in vsaka nova različica prinaša široko paleto zmogljivosti in funkcij. Ko se povzpnete po krivulji učenja, lahko pišete sofisticirane aplikacije za strojno učenje in jih izvajate z veliko hitrostjo.
Toda vzpenjanje po krivulji učenja ni enostavno – z veliko močjo prihaja velika zapletenost. Da bi vam pomagali pri vzponu, se morate zavedati vrst podatkov TensorFlow, pripomočka TensorBoard in uvajanja aplikacij v Googlov strojni učni mehanizem.
Osnovni tipi podatkov v TensorFlow
Aplikacije TensorFlow lahko pišete v več različnih jezikih, kot so Python, C++ in Java. Ne glede na to, kateri jezik uporabljate, morate poznati vrsto podatkovnih tipov, specifičnih za TensorFlow:
- Tenzorji in označevalci mesta: Tenzor je primerek razreda Tensor in služi kot večdimenzionalni niz splošnega namena. Označevalnik mesta je tudi Tensor, vendar namesto inicializacije v kodi prejme podatke iz seje, ki bodo veljavni med eno izvedbo seje. Nadomestni znaki omogočajo posodabljanje vsebine tenzorja od izvajanja ene seje do naslednje.
- Grafi: graf je vsebnik, podoben seznamu ali zbirki. Naenkrat je lahko aktiven samo en graf in ko kodirate operacijo, ki sprejema tenzorje ali spremenljivke, so tenzorji, spremenljivke in operacija shranjeni kot elementi v grafu. Ko ustvarite optimizator in pokličete njegovo metodo minimize, TensorFlow shrani nastalo operacijo v graf.
- Seje . Grafi shranjujejo operacije, vendar jih ne morejo izvajati sami. Namesto tega morate ustvariti sejo in poklicati njeno metodo za zagon. Če pokličete run s tenzorjem ali operacijo, bo metoda izvedla operacije v grafu, potrebne za pridobitev želenega rezultata.
- Optimizatorji . Cilj strojnega učenja je izboljšati matematični model sistema v resničnem svetu, dokler ni čim bolj podoben sistemu. Ta postopek izpopolnjevanja se imenuje optimizacija in raziskovalci so razvili številne metode optimizacije. TensorFlow podpira številne od teh algoritmov in zagotavlja razred optimizatorja za vsakega. Ne glede na razred lahko dobite operacijo optimizacije tako, da pokličete optimizatorjevo metodo minimize.
- spremenljivke . Za razliko od tenzorjev in nadomestnih znakov je spremenljivka primerek razreda Variable. Njegov primarni namen je vsebovati podatke, ki jih je treba posodobiti med postopkom optimizacije. Na primer, če vaša aplikacija modelira sistem z ravno črto, boste shranili naklon črte in prestrezanje y kot spremenljivke. Toda preden lahko uporabite spremenljivke za optimizacijo modela, morate ustvariti in izvesti posebne inicializacijske operacije.
- Ocenjevalci . Če se raje ne ukvarjate s podatkovnimi strukturami na nizki ravni, kot so seje in grafi, lahko izvedete algoritme strojnega učenja z API-jem za ocenjevanje TensorFlow. Ocenjevalnik je primerek razreda Estimator in vsak ocenjevalec uteleša algoritem strojnega učenja. Glavna prednost uporabe ocenjevalnikov je, da imajo vsi enake tri metode za zagon procesa strojnega učenja: usposabljanje, vrednotenje in napovedovanje.
Kako uporabljati TensorBoard v TensorFlow
Ko namestite TensorFlow, namestitveni program ponuja tudi pripomoček ukazne vrstice z imenom TensorBoard. To ustvari grafe, ki vam omogočajo vizualizacijo delovanja vaše aplikacije TensorFlow. TensorBoard olajša iskanje napak v vaših programih, vendar ga ni enostavno uporabljati. Če želite ustvariti podatke in si ogledati grafe v TensorFlow, morate izvesti šest korakov:
Ustvarite povzetek operacij.
Preden si lahko ogledate podatke v TensorBoardu, morate identificirati podatke, ki bodo prikazani, tako da ustvarite posebne operacije, imenovane operacije povzetka. Te operacije lahko ustvarite tako, da pokličete funkcije paketa tf.summary. Na primer, lahko ustvarite operacijo povzetka za eno samo vrednost tako, da pokličete tf.summary.scalar. Operacijo povzetka za niz vrednosti lahko ustvarite tako, da pokličete tf.summary.histogram. Operacije lahko združite tako, da pokličete funkcijo, kot je tf.summary.merge_all.
Izvedite operacije povzetka.
Ko ustvarite eno ali več operacij povzetka, lahko pridobite povzetke z izvajanjem operacij v seji. Posledično bo seja vrnila medpomnilnik protokola, ki vsebuje povzetke podatkov aplikacije.
Ustvarite FileWriter.
Preden lahko natisnete povzetek v datoteko, morate ustvariti FileWriter tako, da pokličete tf.summary.FileWriter. Ta konstruktor sprejema veliko argumentov, vendar je edini zahtevani argument ime imenika, ki vsebuje povzetke podatkov.
Natisnite povzetek podatkov.
Razred FileWriter nima preproste metode tiskanja. Namesto tega morate poklicati metodo add_summary datoteke FileWriter za tiskanje povzetkov v datoteko. Ta metoda zapiše datoteko dogodka v imenik, podan v konstruktorju FileWriter. Ko natisnete podatke, je dobro, da pokličete metodo close datoteke FileWriter, da uničite primerek.
Zaženite TensorBoard.
Ko namestite TensorFlow, se pripomoček tensorboard prikaže v imeniku skriptov najvišje ravni. Pripomoček lahko zaženete tako, da izvedete ukaz tensorboard in nastavite možnost logdir na ime imenika, ki vsebuje povzetke podatkov. Na primer, če so povzetki podatki v izhodnem imeniku, lahko zaženete TensorBoard tako, da v ukazni vrstici izvedete tensorboard –logdir=output.
Oglejte si TensorBoard v brskalniku.
Ko zaženete pripomoček TensorBoard, si lahko ogledate njegov vmesnik tako, da odprete brskalnik. Privzeti URL je http://localhost:6006, vendar ga lahko konfigurirate tako, da v ukazu tensorboard nastavite možnosti gostitelja in vrat.
Kako zagnati TensorFlow v oblaku
Najboljši razlog za uporabo TensorFlow za strojno učenje je ta, da lahko svoje aplikacije izvajate v oblaku. Natančneje, programe TensorFlow lahko namestite v mehanizem strojnega učenja (ML), ki ga Google daje na voljo kot del platforme Google Cloud Platform (GCP). Ta postopek uvajanja je sestavljen iz sedmih korakov:
Ustvarite projekt Google Cloud Platform.
Ko delate z GCP, služi projekt kot osrednji vsebnik konfiguracijskih nastavitev in izvornih datotek. Nov projekt lahko ustvarite tako, da obiščete platformo Google Cloud , kliknete Izberi projekt in kliknete gumb plus v pogovornem oknu Izbira. Izberete lahko ime svojega projekta, vendar GCP nastavi ID projekta, ki je edinstven med vsemi projekti GCP.
Omogočite dostop do motorja ML.
Vsak nov projekt GCP lahko dostopa do številnih Googlovih zmogljivosti, vključno s shrambo podatkov in shrambo v oblaku. Toda projekti GCP privzeto ne morejo uvesti aplikacij v ML Engine. Če želite omogočiti dostop, odprite meni v zgornjem levem kotu strani projekta, izberite API-ji in storitve in nato kliknite Knjižnica. Kliknite povezavo z naslovom Google Cloud Machine Learning Engine in nato kliknite gumb OMOGOČI.
Namestite komplet za razvoj programske opreme v oblaku (SDK).
Do GCP lahko dostopate iz ukazne vrstice, tako da namestite Googlov Cloud SDK . Če želite to prenesti, kliknite ustrezno povezavo za svoj operacijski sistem. Ko bo namestitev končana, boste lahko dostopali do SDK-ja z izvajanjem ukazov gcloud v ukazni vrstici.
Naložite podatke o usposabljanju/napovedi v Cloud Storage.
ML Engine lahko dostopa do vaših podatkov o usposabljanju/napovedi le, če jih naložite v Googlovo shrambo v oblaku. S storitvijo Cloud Storage lahko komunicirate iz ukazne vrstice prek pripomočka gsutil, ki ga zagotavlja SDK za oblak. Podatki Cloud Storage so vsebovani v imeniku podobnih strukturah, imenovanih vedra, in ko naložite datoteko v vedro, se podatkovna struktura imenuje objekt.
V paket aplikacije dodajte modul setup.py.
Če želite, da bo aplikacija Python dostopna za ML Engine, jo morate strukturirati kot paket. Vsak paket mora imeti modul setup.py v imeniku najvišje ravni. Ta modul mora zagotoviti kodo za setuptools.setup, ki zagotavlja informacije o konfiguraciji motorju ML.
Zaženite usposabljanje za ML Engine.
Če želite svoj model usposobiti v oblaku, morate zagnati opravilo za usposabljanje tako, da zaženete gcloud ml-engine opravila, predloži usposabljanje z ustreznimi možnostmi. Možnosti vključujejo --package-path, ki identificira lokacijo paketa, --module-name, ki zagotavlja ime modula Python, in –job-dir, ki pove motorju ML, kam naj shrani izhod. Ko je usposabljanje končano, bo ML Engine ustvaril SavedModel, ki vsebuje rezultate usposabljanja.
Zaženite nalogo predvidevanja za ML Engine.
Ko pridobite SavedModel, lahko uporabite ML Engine za izvedbo napovedi, tako da zaženete gcloud ml-engine jobs submit napoved z ustreznimi možnostmi. Možnosti vključujejo --input-paths, ki označuje lokacijo vhodnih datotek projekta, --data-format, ki motorju ML pove, kako so vhodni podatki formatirani, in --output-path, ki določa, kje naj bi izhod napovedi biti shranjeni.