Programmēšana

Kas ir TensorFlow? Mašīnmācības bibliotēka paskaidroja

Mašīnmācība ir sarežģīta disciplīna. Bet mašīnmācīšanās modeļu ieviešana ir daudz mazāk biedējoša un sarežģīta nekā agrāk, pateicoties mašīnmācīšanās ietvariem - piemēram, Google TensorFlow -, kas atvieglo datu iegūšanas procesu, apmācības modeļus, prognožu apkalpošanu un nākotnes rezultātu uzlabošanu.

TensorFlow ir Google Brain komandas izveidota atvērtā pirmkoda bibliotēka skaitliskai aprēķināšanai un liela mēroga mašīnmācībai. TensorFlow apvieno virkni mašīnmācīšanās un dziļu mācību (jeb neironu tīklu veidošana) modeļu un algoritmu un padara tos noderīgus, izmantojot kopēju metaforu. Tas izmanto Python, lai nodrošinātu ērtu priekšgala API lietojumprogrammu veidošanai ar sistēmu, vienlaikus izpildot šīs lietojumprogrammas augstas veiktspējas C ++.

TensorFlow var apmācīt un vadīt dziļus neironu tīklus ar roku rakstītu ciparu klasifikācijai, attēlu atpazīšanai, vārdu iegulšanai, atkārtotiem neironu tīkliem, secības secības modeļiem mašīntulkošanai, dabiskās valodas apstrādei un uz PDE (daļēja diferenciālvienādojuma) balstītām simulācijām. Vislabākais ir tas, ka TensorFlow atbalsta ražošanas prognozēšanu mērogā, izmantojot tos pašus modeļus, kurus izmanto apmācībai.

Kā darbojas TensorFlow

TensorFlow ļauj izstrādātājiem izveidot datu plūsmas diagrammas—Struktūras, kas apraksta, kā dati pārvietojas pa diagrammu vai apstrādes mezglu sēriju. Katrs diagrammas mezgls attēlo matemātisku darbību, un katrs savienojums vai mala starp mezgliem ir daudzdimensionāls datu masīvs vai tenors.

TensorFlow to visu nodrošina programmētājam, izmantojot Python valodu. Python ir viegli iemācīties un strādāt, un tas nodrošina ērtus veidus, kā izteikt, kā augsta līmeņa abstrakcijas var savienot kopā. TensorFlow mezgli un tenzori ir Python objekti, un TensorFlow lietojumprogrammas pašas ir Python lietojumprogrammas.

Faktiskās matemātikas operācijas tomēr netiek veiktas Python. Transformāciju bibliotēkas, kas ir pieejamas, izmantojot TensorFlow, tiek rakstītas kā augstas veiktspējas C ++ bināros failus. Python vienkārši vada satiksmi starp gabaliem un nodrošina augsta līmeņa programmēšanas abstrakcijas, lai tos savienotu.

TensorFlow lietojumprogrammas var palaist uz jebkura mērķa, kas ir ērti: vietējā mašīnā, mākoņa kopā, iOS un Android ierīcēs, centrālajos procesoros vai GPU. Ja izmantojat Google pašu mākoni, varat paātrināt TensorFlow Google pielāgotajā TensorFlow Processing Unit (TPU) silīcijā. Rezultātā iegūtos TensorFlow izveidotos modeļus tomēr var izvietot uz lielāko daļu jebkuras ierīces, kur tos izmantos prognožu sniegšanai.

TensorFlow 2.0, kas izlaists 2019. gada oktobrī, daudzējādā ziņā pārveidoja sistēmu, balstoties uz lietotāju atsauksmēm, lai padarītu to vieglāk strādāt (piemēram, izmantojot salīdzinoši vienkāršo Keras API modeļa apmācībai) un efektīvāku. Izplatītās apmācības ir vieglāk vadīt, pateicoties jaunai API, un TensorFlow Lite atbalsts ļauj modeļus izvietot uz daudzveidīgākām platformām. Tomēr agrākajām TensorFlow versijām uzrakstītais kods ir jāpārraksta - dažreiz tikai nedaudz, dažreiz ievērojami -, lai maksimāli izmantotu jauno TensorFlow 2.0 funkciju priekšrocības.

TensorFlow priekšrocības

Vienīgais lielākais ieguvums, ko TensorFlow nodrošina mašīnmācīšanās attīstībai, ir abstrakcija. Tā vietā, lai risinātu algoritmu ieviešanas sīkās detaļas vai izdomātu pareizus veidus, kā vienas funkcijas izvadi piesaistīt citas ievadam, izstrādātājs var koncentrēties uz lietojumprogrammas kopējo loģiku. TensorFlow rūpējas par detaļām aiz ainas.

TensorFlow piedāvā papildu ērtības izstrādātājiem, kuriem jāveic atkļūdošana un jāiepazīstas ar TensorFlow lietotnēm. Dedzīgais izpildes režīms ļauj novērtēt un modificēt katru grafika darbību atsevišķi un caurspīdīgi, tā vietā, lai izveidotu visu diagrammu kā vienu necaurspīdīgu objektu un novērtētu to visu vienlaikus. TensorBoard vizualizācijas komplekts ļauj jums pārbaudīt un profilēt grafiku darbības veidu, izmantojot interaktīvu tīmekļa paneli.

TensorFlow arī iegūst daudzas priekšrocības, pateicoties A saraksta komerciāla apģērba atbalstam Google. Google ir ne tikai veicinājis projekta straujo attīstības tempu, bet arī izveidojis daudzus nozīmīgus piedāvājumus ap TensorFlow, kas atvieglo izvietošanu un lietošanu: iepriekšminētais TPU silīcijs paātrinātai veiktspējai Google mākonī; tiešsaistes centrmezgls modeļu koplietošanai, kas izveidoti ar sistēmu; pārlūkprogrammā un mobilajām ierīcēm draudzīgas ietvara iemiesojumi; un daudz vairāk.

Viens brīdinājums: Dažas TensorFlow ieviešanas detaļas apgrūtina pilnīgi deterministisku modeļa apmācības rezultātu iegūšanu dažiem apmācības darbiem. Dažreiz modelis, kas apmācīts vienā sistēmā, nedaudz atšķirsies no modeļa, kas apmācīts citā, pat ja viņiem tiek piegādāti tieši tie paši dati. Iemesli tam ir slideni - piemēram, kā nejauši izvēlēti skaitļi tiek izsēti un kur, vai arī kāda nenoteikta uzvedība, izmantojot GPU). Tas nozīmē, ka ir iespējams risināt šos jautājumus, un TensorFlow komanda apsver iespēju vairāk kontrolēt, lai ietekmētu determinismu darbplūsmā.

Saistītais video: mašīnmācība un AI atšifrēts

Pārvarot ažiotāžu ap mašīnmācīšanos un mākslīgo intelektu, mūsu panelis pārrunā tehnoloģijas definīcijas un sekas.

TensorFlow pret konkurenci

TensorFlow konkurē ar virkni citu mašīnmācīšanās sistēmu. PyTorch, CNTK un MXNet ir trīs galvenie ietvari, kas atbilst daudzām un tām pašām vajadzībām. Zemāk es atzīmēju, kur viņi izceļas un nonāk pretī TensorFlow.

  • PyTorch, papildus tam, ka tas ir veidots ar Python, un tam ir daudz citu līdzību ar TensorFlow: aparatūras paātrināti komponenti zem pārsega, ļoti interaktīvs izstrādes modelis, kas ļauj veikt darbu pēc sākuma un daudzi noderīgi komponenti, kas jau ir iekļauti. PyTorch parasti ir labāka izvēle ātrai projektu izstrādei, kuriem jābūt izveidotiem un darbināmiem īsā laikā, bet TensorFlow uzvar lielākiem projektiem un sarežģītākām darbplūsmām.

  • CNTK, Microsoft kognitīvo rīku komplekts, tāpat kā TensorFlow, izmanto diagrammas struktūru, lai aprakstītu datu plūsmu, bet visvairāk koncentrējas uz dziļu mācību neironu tīklu izveidi. CNTK ātrāk apstrādā daudzus neironu tīkla darbus, un tam ir plašāks API komplekts (Python, C ++, C #, Java). Bet CNTK pašlaik nav tik viegli iemācīties vai izvietot kā TensorFlow.

  • Apache MXNet, ko Amazon pieņēma kā galveno AWS dziļo mācību sistēmu, var gandrīz lineāri mērogot vairākos GPU un vairākās mašīnās. Tas atbalsta arī plašu valodu API - Python, C ++, Scala, R, JavaScript, Julia, Perl, Go -, lai gan tā vietējās API nav tik patīkami strādāt kā ar TensorFlow.