TensorFlow

**TensorFlow** je besplatna softverska biblioteka otvorenog koda za mašinsko učenje i veštačku inteligenciju . Može se koristiti za različite zadatke, ali ima poseban fokus na obučavanje i inferenciju dubokih neuronskih mreža .

Razvio ga je tim iz Google Brain-a za Google-ovu internu upotrebu u istraživanju i proizvodnji. Početna verzija je objavljena pod Apache License 2.0 2015. Google je objavio ažuriranu verziju, TensorFlow 2.0, u septembru 2019.

TensorFlow se može koristiti u velikom broju programskih jezika, uključujući Python, JavaScript, C++ i Javu, što olakšava njegovu upotrebu u nizu aplikacija u mnogim sektorima.

## Karakteristike

### AutoDifferentiation
AutoDifferentiation je proces automatskog izračunavanja gradijenta modela u odnosu na svaki od njegovih parametara. Uz ovu funkciju, TensorFlow može automatski izračunati gradijente za parametre u modelu, što je korisno za algoritme kao što su propagacija unazad koja zahtijeva gradijente za optimizaciju performansi modela. Da bi to uradio, TensorFlow mora da prati redosled operacija izvršenih na ulaznim tenzorima u modelu, a zatim da izračuna gradijente u odnosu na odgovarajuće parametre.

### Eager execution
TensorFlow uključuje režim “nestrpljivog izvršavanja”, što znači da se operacije procjenjuju odmah za razliku od kreiranja "grafa" koji se izvršava nakon što se ceo kod kompajlira. Kod koji se izvršava "eager" može da se lakše debaguje.Ovo se dešava jer podaci se mogu procesuirati u svakoj liniji koda, a ne kasnije u računarskom grafu. Smatra se da je ova paradigma izvršenja lakša za otklanjanje grešaka zbog njenog pristupa od korak po korak.

### Distribuiranje
I u nestrpljivom, i u grafskom izvršavanju, TensorFlow pruža mogućnost distribucije izračunavanja na više uređaja s različitim strategijama distribucije, preko svog API-ja. Ovo distribuirano računarstvo često može ubrzati izvođenje obuke i evaluacije TensorFlow modela i uobičajena je praksa u oblasti AI.

### Funkcije cene
Za obuku i procjenu modela, TensorFlow pruža skup funkcija cene (također poznate kao funkcije greške ). Neki popularni primjeri uključuju srednju kvadratnu grešku (MSE) i binarnu unakrsnu entropiju (BCE).

### Metrike
Za procjenu performansi modela mašinskog učenja, TensorFlow daje API pristup često korištenim metrikama. Primjeri uključuju različite metrike točnosti (binarne, kategoričke, razređene odnosno "sparse" kategorične) zajedno s drugim metrikama kao što su Precision, Recall i Intersection-over-Union (IoU).

### TF.nn
TensorFlow.nn je modul za izvršavanje primitivnih operacija neuronske mreže na modelima. Neke od ovih operacija uključuju varijacije konvolucija (1/2/3D, Atrous, dubinske), funkcije aktivacije ( Softmax, RELU, GELU, Sigmoid, itd.) i njihove varijacije, kao i druge operacije ( max-pooling, bias-add, itd.).

### Optimizatori
TensorFlow nudi skup optimizatora za obuku neuronskih mreža, uključujući ADAM, ADAGRAD i Stohastički Opadajući Gradijent (SGD). Kada trenirate model, različiti optimizatori nude različite načine podešavanja parametara, često utičući na konvergenciju i performanse modela.

## Upotreba i

### TensorFlow
TensorFlow služi kao jedna od najpopularnijih platforma i biblioteka za mašinsko učenje. TensorFlow API-ji koriste Keras kako bi omogućili korisnicima da naprave sopstvene modele mašinskog učenja. Pored izgradnje i obuke njihovog modela, TensorFlow takođe može pomoći u učitavanju podataka za obuku modela i implementaciji pomoću TensorFlow Servinga.

TensorFlow pruža stabilan Python aplikacijski programski interfejs ( API ), kao i API-je bez povratne garancije kompatibilnosti za Javascript, C++, i Javu . Paketi za povezivanje jezika treće strane su također dostupni za C#, Haskell, Julia, MATLAB, Object Pascal, R, Scala, Rust, OCaml, i Crystal . Opcije koje su sada arhivirane i nepodržane, uključuju Go  i Swift .

### TensorFlow.js
TensorFlow takođe ima biblioteku za mašinsko učenje u JavaScript-u. Koristeći obezbeđene JavaScript API-je, TensorFlow.js omogućava korisnicima da koriste ili Tensorflow.js modele ili konvertovane modele iz TensorFlow ili TFLite, da ponovo obuče date modele i zatim ih pokreću na svojoj veb aplikaciji.

### TFLite
TensorFlow Lite sadrži API-je za mobilne aplikacije ili ugrađene(embedded) uređaje za kreiranje i implementaciju TensorFlow modela. Ovi modeli su komprimovani i optimizirani kako bi bili efikasniji i imali veće performanse na uređajima manjeg kapaciteta.

TensorFlow Lite koristi FlatBuffers kao format serijalizacije podataka za mrežne modele, izbjegavajući format Protocol Buffers koji koriste standardni TensorFlow modeli.

### TFX
TensorFlow Extended (skraćeno TFX) pruža brojne komponente za obavljanje svih operacija potrebnih za proizvodnju od kraja do kraja. Komponente uključuju učitavanje, provjeru valjanosti i transformaciju podataka, podešavanje, obuku i evaluaciju modela mašinskog učenja, te guranje samog modela u proizvodnju.

### Integracije

#### Numpy
Numpy je jedna od najpopularnijih Python biblioteka podataka, i TensorFlow nudi integraciju i kompatibilnost sa svojim funkcionalnostima. Numpy NDarrays, jedan od glavnih tipova podataka biblioteke, automatski se konvertuju u TensorFlow tenzore u TF operacijama; kao i obrnuto. Ovo omogućava da dvije biblioteke rade zajednički bez potrebe da korisnik piše eksplicitne konverzije podataka. Štaviše, integracija se proširuje na optimizaciju memorije tako što TF Tensors dijele osnovne memorijske reprezentacije Numpy NDarray-a kad god je to moguće.

### Ekstenzije
TensorFlow također nudi razne biblioteke i ekstenzije za unapređenje i proširenje broja modela i metoda koje se koriste. Na primjer, TensorFlow Recommenders i TensorFlow Graphics su biblioteke za njihove odgovarajuće funkcionalnosti u sistemima preporuke i grafici, TensorFlow Federated pruža okvir za decentralizirane podatke, a TensorFlow Cloud omogućava korisnicima direktnu interakciju s Google Cloudom kako bi integrirali svoj lokalni kod u Google Cloud. Ostali dodaci, biblioteke i okviri uključuju TensorFlow Model Optimization, TensorFlow Probability, TensorFlow Quantum i TensorFlow Decision Trees.

#### Google Colab
Google je također objavio Colaboratory, TensorFlow Jupyter notebook okruženje koje ne zahtijeva nikakvo podešavanje. Korisniku ovo omogućava korišćenje TensorfFlow biblioteka na Google Cloud-u i omogućava besplatan pristup GPU-ima i mogućnost skladištenja i dijeljenja "notebook"-ova na Google Drive-u .

#### Google JAX
Google JAX je framework za mašinsko učenje koje se koristi za transformaciju numeričkih funkcija. Opisuje se kao spoj modifikovane verzije autograd (automatsko dobijanje funkcije gradijenta kroz diferencijaciju funkcije) i TensorFlow XLA (ubrzana linearna algebra). Dizajniran je da prati strukturu i radni tok NumPy-a što je bliže moguće i radi sa TensorFlow-om kao i drugim okvirima kao što je PyTorch . Primarne funkcije JAX-a su:

# grad: automatska diferencijacija
# jit: kompilacija
# vmap: auto-vektorizacija
# pmap: SPMD programiranje

## Prijave

### Medicinski
GE Healthcare je koristio TensorFlow da poveća brzinu i tačnost magnetne rezonance u identifikaciji određenih delova tela. Google je koristio TensorFlow da kreira DermAssist, besplatnu mobilnu aplikaciju koja korisnicima omogućava da slikaju svoju kožu i identifikuju potencijalne zdravstvene komplikacije. Sinovation Ventures je koristio TensorFlow za identifikaciju i klasifikaciju očnih bolesti iz skeniranja optičke koherentne tomografije (OCT).

### Društveni mediji
Twitter je implementirao TensorFlow da rangira tweetove po važnosti za datog korisnika i promijenio njihovu platformu da prikazuje tvitove prema ovom rangiranju. Ranije su tvitovi jednostavno prikazivani obrnutim hronološkim redom. Aplikacija za dijeljenje fotografija VSCO koristila je TensorFlow kako bi predložila prilagođene filtere za fotografije.

### Pretraživač
Google je zvanično objavio RankBrain 26. oktobra 2015. uz podršku TensorFlow-a.

### Obrazovanje
InSpace, virtuelna platforma za učenje, koristila je TensorFlow za filtriranje toksičnih poruka za ćaskanje u učionicama. Liulishuo, online platforma za učenje engleskog jezika, koristila je TensorFlow za kreiranje prilagodljivog nastavnog plana i programa za svakog učenika. TensorFlow je korišten za preciznu procjenu sposobnosti učenika, a također je pomogao u odlučivanju o daljem prikazivanju sadržaja na osnovu tih sposobnosti.

### Maloprodaja
Platforma za e-trgovinu Carousell koristila je TensorFlow za pružanje personaliziranih preporuka za kupce. Kozmetička kompanija ModiFace koristila je TensorFlow da stvori iskustvo proširene stvarnosti za kupce kako bi testirali različite nijanse šminke na svom licu.
 

### Istraživanja
TensorFlow je osnova za automatizovani softver za titlovanje slika DeepDream .

## Povezano
* Poređenje softvera za duboko učenje
* Keras

## Izvori