Programmering

Hvad er TensorFlow? Machine learning-biblioteket forklaret

Maskinindlæring er en kompleks disciplin. Men implementering af maskinlæringsmodeller er langt mindre skræmmende og vanskelig, end det var, takket være maskinlæringsrammer - som Googles TensorFlow - der letter processen med at indhente data, træningsmodeller, betjene forudsigelser og forfine fremtidige resultater.

TensorFlow er oprettet af Google Brain-teamet og er et open source-bibliotek til numerisk beregning og storskalig maskinindlæring. TensorFlow samler en række maskinlæring og dyb læring (aka neurale netværk) modeller og algoritmer og gør dem nyttige ved hjælp af en fælles metafor. Det bruger Python til at give en praktisk front-end API til at opbygge applikationer med rammen, mens de udfører disse applikationer i højtydende C ++.

TensorFlow kan træne og køre dybe neurale netværk til håndskrevet cifret klassificering, billedgenkendelse, ordindlejringer, tilbagevendende neurale netværk, sekvens-til-sekvens modeller til maskinoversættelse, naturlig sprogbehandling og PDE (delvis differentialligning) baserede simuleringer. Bedst af alt understøtter TensorFlow produktionsforudsigelse i målestok med de samme modeller, der bruges til træning.

Sådan fungerer TensorFlow

TensorFlow tillader udviklere at oprette dataforløbsgrafer—Strukturer, der beskriver, hvordan data bevæger sig gennem en graf eller en række behandlingsnoder. Hver knude i grafen repræsenterer en matematisk operation, og hver forbindelse eller kant mellem knudepunkter er et flerdimensionelt dataarray, eller tensor.

TensorFlow leverer alt dette til programmøren ved hjælp af Python-sproget. Python er let at lære og arbejde med og giver praktiske måder at udtrykke, hvordan abstraktioner på højt niveau kan kobles sammen. Noder og tensorer i TensorFlow er Python-objekter, og TensorFlow-applikationer er selv Python-applikationer.

De faktiske matematiske operationer udføres dog ikke i Python. Bibliotekerne med transformationer, der er tilgængelige via TensorFlow, er skrevet som højtydende C ++ -binarier. Python dirigerer bare trafik mellem stykkerne og leverer programmeringsabstraktioner på højt niveau for at hænge dem sammen.

TensorFlow-applikationer kan køres på stort set ethvert mål, der er praktisk: en lokal maskine, en klynge i skyen, iOS- og Android-enheder, CPU'er eller GPU'er. Hvis du bruger Googles egen sky, kan du køre TensorFlow på Googles brugerdefinerede TensorFlow Processing Unit (TPU) silicium for yderligere acceleration. De resulterende modeller oprettet af TensorFlow kan dog implementeres på de fleste enheder, hvor de vil blive brugt til at tjene forudsigelser.

TensorFlow 2.0, udgivet i oktober 2019, moderniserede rammen på mange måder baseret på brugerfeedback for at gøre det lettere at arbejde med (f.eks. Ved at bruge den relativt enkle Keras API til modeluddannelse) og mere performant. Distribueret træning er lettere at køre takket være en ny API, og support til TensorFlow Lite gør det muligt at implementere modeller på et større udvalg af platforme. Kode, der er skrevet til tidligere versioner af TensorFlow, skal dog omskrives - nogle gange kun lidt, nogle gange markant - for at drage størst mulig fordel af nye TensorFlow 2.0-funktioner.

TensorFlow fordele

Den største enkeltfordel, TensorFlow giver til maskinindlæring, er abstraktion. I stedet for at beskæftige sig med de detaljerede detaljer ved implementering af algoritmer eller finde ud af de rigtige måder at tilslutte output fra en funktion til input fra en anden, kan udvikleren fokusere på applikationens overordnede logik. TensorFlow tager sig af detaljerne bag kulisserne.

TensorFlow tilbyder yderligere bekvemmeligheder for udviklere, der har brug for fejlfinding og få introspektion i TensorFlow-apps. Den ivrige udførelsestilstand giver dig mulighed for at evaluere og ændre hver grafoperation separat og gennemsigtigt i stedet for at konstruere hele grafen som et enkelt uigennemsigtigt objekt og evaluere det hele på én gang. TensorBoard-visualiseringspakken giver dig mulighed for at inspicere og profilere måder, hvorpå grafer køres via et interaktivt, webbaseret dashboard.

TensorFlow vinder også mange fordele ved opbakning til et A-liste kommercielt outfit i Google. Google har ikke kun fremskyndet det hurtige udviklingstakt bag projektet, men skabt mange vigtige tilbud omkring TensorFlow, der gør det lettere at implementere og lettere at bruge: det ovennævnte TPU-silicium til hurtigere ydeevne i Googles sky; et online hub til deling af modeller oprettet med rammen; in-browser og mobilvenlige inkarnationer af rammen; og meget mere.

Én advarsel: Nogle detaljer om TensorFlow's implementering gør det svært at opnå helt deterministiske model-træningsresultater for nogle træningsjob. Nogle gange vil en model, der er trænet på et system, variere lidt fra en model, der er trænet på et andet, selv når de får nøjagtigt de samme data. Årsagerne til dette er glatte - f.eks. Hvordan tilfældige tal udsås, og hvor eller visse ikke-deterministiske opførsler, når man bruger GPU'er). Når det er sagt, er det muligt at omgå disse problemer, og TensorFlow's team overvejer flere kontroller for at påvirke determinisme i en arbejdsgang.

Relateret video: Maskinindlæring og AI-dechifreret

Ved at bryde igennem hype omkring maskinlæring og kunstig intelligens taler vores panel gennem definitionerne og implikationerne af teknologien.

TensorFlow vs. konkurrencen

TensorFlow konkurrerer med en række andre maskinlæringsrammer. PyTorch, CNTK og MXNet er tre store rammer, der imødekommer mange af de samme behov. Nedenfor har jeg bemærket, hvor de skiller sig ud og kommer kort mod TensorFlow.

  • PyTorchud over at være bygget med Python og har mange andre ligheder med TensorFlow: hardware-accelererede komponenter under emhætten, en meget interaktiv udviklingsmodel, der giver mulighed for design-as-you-go-arbejde og mange nyttige komponenter, der allerede er inkluderet. PyTorch er generelt et bedre valg til hurtig udvikling af projekter, der skal køre på kort tid, men TensorFlow vinder ud for større projekter og mere komplekse arbejdsgange.

  • CNTK, Microsoft Cognitive Toolkit, som TensorFlow bruger en grafstruktur til at beskrive dataforløb, men fokuserer mest på at skabe neurale netværk med dyb læring. CNTK håndterer mange neurale netværksjob hurtigere og har et bredere sæt API'er (Python, C ++, C #, Java). Men CNTK er i øjeblikket ikke så let at lære eller implementere som TensorFlow.

  • Apache MXNet, vedtaget af Amazon som den førende dybdelæringsramme om AWS, kan skaleres næsten lineært på tværs af flere GPU'er og flere maskiner. Det understøtter også en bred vifte af sprog-API'er - Python, C ++, Scala, R, JavaScript, Julia, Perl, Go - selvom dens oprindelige API'er ikke er så behagelige at arbejde med som TensorFlow's.

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