Programmering

Hva er TensorFlow? Maskinlæringsbiblioteket forklart

Maskinlæring er en kompleks disiplin. Men implementering av maskinlæringsmodeller er langt mindre skremmende og vanskelig enn før, takket være maskinlæringsrammer - som Googles TensorFlow - som letter prosessen med å skaffe data, opplæringsmodeller, betjene spådommer og foredle fremtidige resultater.

TensorFlow er laget av Google Brain-teamet og er et open source-bibliotek for numerisk beregning og storskala maskinlæring. TensorFlow bunter sammen en rekke modeller for maskinlæring og dyp læring (aka neurale nettverk) og algoritmer, og gjør dem nyttige ved hjelp av en felles metafor. Den bruker Python for å gi en praktisk front-end API for å bygge applikasjoner med rammeverket, mens de utfører disse applikasjonene i høy ytelse C ++.

TensorFlow kan trene og kjøre dype nevrale nettverk for håndskrevet sifferklassifisering, bildegjenkjenning, ordinnblanding, tilbakevendende nevrale nettverk, sekvens-til-sekvens-modeller for maskinoversettelse, naturlig språkbehandling og PDE (delvis differensialligning) baserte simuleringer. Best av alt, TensorFlow støtter produksjonsforutsigelse i stor skala, med de samme modellene som brukes til trening.

Hvordan TensorFlow fungerer

TensorFlow lar utviklere lage dataflyt grafer—Strukturer som beskriver hvordan data beveger seg gjennom en graf, eller en serie behandlingsnoder. Hver node i grafen representerer en matematisk operasjon, og hver forbindelse eller kant mellom nodene er en flerdimensjonal datarase, eller tensor.

TensorFlow gir alt dette for programmereren ved hjelp av Python-språket. Python er lett å lære og jobbe med, og gir praktiske måter å uttrykke hvordan høynivåabstraksjoner kan kobles sammen. Noder og tensorer i TensorFlow er Python-objekter, og TensorFlow-applikasjoner er selv Python-applikasjoner.

Den faktiske matteoperasjonen utføres imidlertid ikke i Python. Biblioteker for transformasjoner som er tilgjengelige gjennom TensorFlow er skrevet som C ++ binær med høy ytelse. Python dirigerer bare trafikk mellom brikkene, og gir programmeringsabstraksjoner på høyt nivå for å koble dem sammen.

TensorFlow-applikasjoner kan kjøres på de fleste mål som er praktisk: en lokal maskin, en klynge i skyen, iOS- og Android-enheter, CPUer eller GPUer. Hvis du bruker Googles egen sky, kan du kjøre TensorFlow på Googles tilpassede TensorFlow Processing Unit (TPU) silisium for ytterligere akselerasjon. De resulterende modellene opprettet av TensorFlow kan imidlertid distribueres på de fleste enheter der de skal brukes til å tjene spådommer.

TensorFlow 2.0, utgitt i oktober 2019, forbedret rammeverket på mange måter basert på tilbakemeldinger fra brukerne, for å gjøre det lettere å jobbe med (f.eks. Ved å bruke den relativt enkle Keras API for modellopplæring) og mer performant. Distribuert opplæring er lettere å kjøre takket være en ny API, og støtte for TensorFlow Lite gjør det mulig å distribuere modeller på et større utvalg av plattformer. Koden som er skrevet for tidligere versjoner av TensorFlow må imidlertid skrives om - noen ganger bare litt, noen ganger betydelig - for å utnytte de nye TensorFlow 2.0-funksjonene maksimalt.

TensorFlow fordeler

Den største fordelen TensorFlow gir for utvikling av maskinlæring er abstraksjon. I stedet for å håndtere detaljene ved implementering av algoritmer, eller finne ut riktige måter å koble utgangen fra en funksjon til inngangen til en annen, kan utvikleren fokusere på den generelle logikken til applikasjonen. TensorFlow tar seg av detaljene bak kulissene.

TensorFlow tilbyr ekstra bekvemmeligheter for utviklere som trenger feilsøking og få introspeksjon i TensorFlow-apper. Den ivrige kjøringsmodus lar deg evaluere og endre hver grafoperasjon separat og gjennomsiktig, i stedet for å konstruere hele grafen som et enkelt ugjennomsiktig objekt og evaluere alt på en gang. TensorBoard-visualiseringssuiten lar deg inspisere og profilere grafene som kjøres ved hjelp av et interaktivt, nettbasert dashbord.

TensorFlow får også mange fordeler med støtten til et A-liste kommersielt antrekk i Google. Google har ikke bare drevet den raske utviklingen bak prosjektet, men skapt mange viktige tilbud rundt TensorFlow som gjør det lettere å distribuere og enklere å bruke: det ovennevnte TPU-silisiumet for akselerert ytelse i Googles sky; et online knutepunkt for deling av modeller opprettet med rammeverket; i nettleseren og mobilvennlige inkarnasjoner av rammeverket; og mye mer.

Én advarsel: Noen detaljer om implementeringen av TensorFlow gjør det vanskelig å oppnå helt deterministiske modellopplæringsresultater for noen treningsjobber. Noen ganger vil en modell som er trent på ett system, variere litt fra en modell som er trent på et annet, selv når de får mat til nøyaktig samme data. Årsakene til dette er glatte - for eksempel hvordan tilfeldige tall blir sådd og hvor, eller visse ikke-deterministiske atferd når du bruker GPUer). Når det er sagt, er det mulig å omgå disse problemene, og TensorFlow-teamet vurderer flere kontroller for å påvirke determinismen i en arbeidsflyt.

Relatert video: Maskinlæring og AI-dekryptert

Ved å bryte gjennom sprøytenarkomanen rundt maskinlæring og kunstig intelligens, snakker panelet vårt gjennom definisjonene og implikasjonene av teknologien.

TensorFlow vs. konkurransen

TensorFlow konkurrerer med en rekke andre maskinlæringsrammer. PyTorch, CNTK og MXNet er tre store rammer som dekker mange av de samme behovene. Nedenfor har jeg lagt merke til hvor de skiller seg ut og kommer kort opp mot TensorFlow.

  • PyTorch, i tillegg til å være bygget med Python, og har mange andre likheter med TensorFlow: maskinvareakselererte komponenter under panseret, en svært interaktiv utviklingsmodell som gir mulighet for design-as-you-go-arbeid, og mange nyttige komponenter som allerede er inkludert. PyTorch er generelt et bedre valg for rask utvikling av prosjekter som trenger å være i gang på kort tid, men TensorFlow vinner ut for større prosjekter og mer komplekse arbeidsflyter.

  • CNTK, Microsoft Cognitive Toolkit, i likhet med TensorFlow, bruker en grafstruktur for å beskrive dataflyt, men fokuserer mest på å skape dyp læring nevrale nettverk. CNTK håndterer mange nevrale nettverksjobber raskere, og har et bredere sett med APIer (Python, C ++, C #, Java). Men CNTK er foreløpig ikke så lett å lære eller distribuere som TensorFlow.

  • Apache MXNet, vedtatt av Amazon som det fremste rammeverket for dyp læring på AWS, kan skaleres nesten lineært på tvers av flere GPUer og flere maskiner. Den støtter også et bredt spekter av språk-API-er - Python, C ++, Scala, R, JavaScript, Julia, Perl, Go - selv om de opprinnelige API-ene ikke er like hyggelige å jobbe med som TensorFlow.

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