Programiranje

Kaj je TensorFlow? Razložena knjižnica strojnega učenja

Strojno učenje je zapletena disciplina. Toda uvajanje modelov strojnega učenja je veliko manj zastrašujoče in težko kot nekoč, zahvaljujoč ogrodjem strojnega učenja - kot je Googlov TensorFlow -, ki olajšajo postopek pridobivanja podatkov, modelov usposabljanja, vročanja napovedi in izboljšanja prihodnjih rezultatov.

TensorFlow, ki ga je ustvarila ekipa Google Brain, je odprtokodna knjižnica za numerično računanje in obsežno strojno učenje. TensorFlow združuje množico modelov in algoritmov strojnega učenja in globokega učenja (aka nevronsko mreženje) ter jih naredi uporabne s skupno metaforo. Uporablja Python za priročen čelni API za izdelavo aplikacij z ogrodjem, hkrati pa jih izvaja v visoko zmogljivem C ++.

TensorFlow lahko trenira in izvaja globoke nevronske mreže za lastnoročno klasifikacijo številk, prepoznavanje slik, vdelavo besed, ponavljajoče se nevronske mreže, modele zaporedja v zaporedje za strojno prevajanje, obdelavo naravnega jezika in simulacije na osnovi PDE (delna diferencialna enačba). Najboljše od vsega je, da TensorFlow podpira predvidevanje proizvodnje v obsegu, z enakimi modeli, ki se uporabljajo za usposabljanje.

Kako deluje TensorFlow

TensorFlow razvijalcem omogoča ustvarjanje grafi pretoka podatkov—Strukture, ki opisujejo, kako se podatki premikajo skozi graf ali vrsto vozlišč za obdelavo. Vsako vozlišče v grafu predstavlja matematično operacijo, vsaka povezava ali rob med vozlišči pa je večdimenzionalno podatkovno polje ali tenzor.

TensorFlow vse to ponuja programerju v jeziku Python. Python je enostaven za učenje in delo z njim ter ponuja priročne načine za izražanje povezave abstrakcij na visoki ravni. Vozlišča in tenzorji v programu TensorFlow so predmeti Python, aplikacije TensorFlow pa so same aplikacije Python.

Dejanske matematične operacije pa se v Pythonu ne izvajajo. Knjižnice transformacij, ki so na voljo prek TensorFlow, so zapisane kot visoko zmogljivi binarni programi C ++. Python samo usmerja promet med deli in ponuja programske abstrakcije na visoki ravni, da jih poveže.

Aplikacije TensorFlow je mogoče zagnati na poljubnem poljubnem cilju, ki je primeren: lokalni računalnik, grozd v oblaku, naprave iOS in Android, CPU ali GPU. Če uporabljate Googlov lasten oblak, lahko za nadaljnje pospeševanje zaženete TensorFlow na Googlovem siliciju TensorFlow Processing Unit (TPU) po meri. Nastale modele, ki jih je ustvaril TensorFlow, je mogoče uporabiti v večini naprav, kjer bodo služili za napovedi.

TensorFlow 2.0, izdan oktobra 2019, je ogrodje na več načinov prenovil na podlagi povratnih informacij uporabnikov, da je olajšal delo z njim (npr. Z uporabo relativno preprostega Keras API-ja za usposabljanje modelov) in bolj zmogljiv. Porazdeljeno usposabljanje je lažje izvajati po zaslugi novega API-ja, podpora za TensorFlow Lite pa omogoča uvajanje modelov na več različnih platformah. Vendar je treba kodo, napisano za starejše različice programa TensorFlow, prepisati - včasih le nekoliko, včasih bistveno -, da bi kar najbolje izkoristili nove funkcije TensorFlow 2.0.

Prednosti TensorFlow

Največja korist, ki jo TensorFlow nudi za razvoj strojnega učenja, je abstrakcija. Namesto da bi se razvijal z drobnimi podrobnostmi izvajanja algoritmov ali ugotovil ustrezne načine za priklop izhoda ene funkcije na vhod druge, se lahko razvijalec osredotoči na splošno logiko aplikacije. TensorFlow skrbi za podrobnosti v zakulisju.

TensorFlow ponuja dodatne ugodnosti za razvijalce, ki morajo odpraviti napake in pridobiti introspekcijo aplikacij TensorFlow. Način nestrpnega izvajanja vam omogoča, da vsako operacijo grafa ocenite in spremenite ločeno in pregledno, namesto da bi celoten graf konstruirali kot en neprozoren objekt in ga ocenili naenkrat. Zbirka za vizualizacijo TensorBoard vam omogoča pregled in profiliranje načinov, kako grafi delujejo z interaktivno spletno nadzorno ploščo.

TensorFlow ima tudi številne prednosti s podporo Googlove komercialne opreme s seznama A. Google ni samo spodbujal hitrega razvoja, ki stoji za projektom, ampak je okoli TensorFlowa ustvaril številne pomembne ponudbe, ki olajšajo uvajanje in lažjo uporabo: zgoraj omenjeni silicij TPU za pospešeno delovanje v Googlovem oblaku; spletno središče za izmenjavo modelov, ustvarjenih z ogrodjem; inkarnacije okvira v brskalniku in mobilnikom; in veliko več.

Eno opozorilo: nekatere podrobnosti izvajanja TensorFlow-a otežujejo doseganje popolnoma determinističnih rezultatov usposabljanja za nekatera delovna mesta. Včasih se model, usposobljen v enem sistemu, nekoliko razlikuje od modela, usposobljenega v drugem sistemu, tudi če dobijo popolnoma enake podatke. Razlogi za to so spolzki - npr. Kako se zasejejo naključne številke in kje ali nekatera nedeterministična vedenja pri uporabi grafičnih procesorjev). Kljub temu je mogoče rešiti ta vprašanja, ekipa TensorFlowa pa razmišlja o dodatnih kontrolah, ki bi vplivale na determinizem v poteku dela.

Sorodni video: Strojno učenje in dešifrirana umetna inteligenca

Prebrskajoč hrup okoli strojnega učenja in umetne inteligence, naš panel govori o definicijah in posledicah tehnologije.

TensorFlow v primerjavi s konkurenco

TensorFlow tekmuje z množico drugih okvirov strojnega učenja. PyTorch, CNTK in MXNet so trije glavni okviri, ki obravnavajo številne enake potrebe. Spodaj sem ugotovil, kje izstopajo in so naleteli na TensorFlow.

  • PyTorchpoleg tega, da je zgrajen s Pythonom in ima še veliko podobnosti s TensorFlowom: strojno pospešene komponente pod pokrovom, visoko interaktivni razvojni model, ki omogoča delo po načrtovanju, in številne uporabne komponente, ki so že vključene. PyTorch je na splošno boljša izbira za hiter razvoj projektov, ki jih je treba začeti izvajati v kratkem času, vendar TensorFlow zmaga pri večjih projektih in bolj zapletenih potekih dela.

  • CNTK, Microsoft Cognitive Toolkit, tako kot TensorFlow, uporablja grafično strukturo za opis pretoka podatkov, vendar se najbolj osredotoča na ustvarjanje nevronskih mrež za globoko učenje. CNTK hitreje obravnava številna opravila nevronskih omrežij in ima širši nabor API-jev (Python, C ++, C #, Java). Toda CNTK trenutno ni tako enostavno naučiti ali uvesti kot TensorFlow.

  • Apache MXNet, ki ga je Amazon sprejel kot glavno ogrodje za globoko učenje na AWS, lahko skoraj linearno obsega več grafičnih procesorjev in več strojev. Podpira tudi široko paleto jezikovnih API-jev - Python, C ++, Scala, R, JavaScript, Julia, Perl, Go - čeprav z njenimi izvornimi API-ji ni tako prijetno delati kot s TensorFlow-om.

$config[zx-auto] not found$config[zx-overlay] not found