Vad är TensorFlow? Maskininlärningsbiblioteket förklarade

Maskininlärning är en komplex disciplin. Men att implementera maskininlärningsmodeller är mycket mindre skrämmande och svårt än tidigare, tack vare maskininlärningsramar - som Googles TensorFlow - som underlättar processen med att skaffa data, träna modeller, betjäna förutsägelser och förfina framtida resultat.

TensorFlow är skapat av Google Brain-teamet och är ett bibliotek med öppen källkod för numerisk beräkning och storskalig maskininlärning. TensorFlow buntar ihop en massa maskininlärning och djupinlärningsmodeller (aka neuralt nätverk) och algoritmer och gör dem användbara genom en gemensam metafor. Den använder Python för att tillhandahålla ett bekvämt frontend-API för att bygga applikationer med ramverket, medan de körs i högpresterande C ++.

TensorFlow kan träna och köra djupa neurala nätverk för klassificering av handskrivna siffror, bildigenkänning, ordinbäddning, återkommande neurala nätverk, sekvens-till-sekvensmodeller för maskinöversättning, naturlig språkbehandling och PDE (partiell differentialekvation) baserade simuleringar. Bäst av allt stöder TensorFlow produktionsförutsägelser i stor skala, med samma modeller som används för träning.

Hur TensorFlow fungerar

TensorFlow tillåter utvecklare att skapa dataflödesdiagram - strukturer som beskriver hur data rör sig genom ett diagram eller en serie behandlingsnoder. Varje nod i diagrammet representerar en matematisk operation, och varje anslutning eller kant mellan noder är en flerdimensionell dataarray eller tensor .

TensorFlow tillhandahåller allt detta för programmeraren med hjälp av Python-språket. Python är lätt att lära sig och arbeta med och ger praktiska sätt att uttrycka hur abstraktioner på hög nivå kan kopplas ihop. Noder och tensorer i TensorFlow är Python-objekt, och TensorFlow-applikationer är själva Python-applikationer.

De faktiska matematiska operationerna utförs dock inte i Python. Biblioteken med transformationer som är tillgängliga via TensorFlow skrivs som högpresterande C ++ - binärer. Python leder bara trafik mellan bitarna och tillhandahåller programmeringsabstraktioner på hög nivå för att koppla ihop dem.

TensorFlow-applikationer kan köras på de flesta mål som är praktiska: en lokal maskin, ett kluster i molnet, iOS- och Android-enheter, CPU eller GPU. Om du använder Googles eget moln kan du köra TensorFlow på Googles anpassade TensorFlow Processing Unit (TPU) kisel för ytterligare acceleration. De resulterande modellerna skapade av TensorFlow kan dock distribueras på de flesta enheter där de kommer att användas för att tjäna förutsägelser.

TensorFlow 2.0, släppt i oktober 2019, förnyade ramverket på många sätt baserat på användarfeedback för att göra det lättare att arbeta med (t.ex. genom att använda det relativt enkla Keras API för modellutbildning) och mer performant. Distribuerad utbildning är lättare att köra tack vare ett nytt API och stöd för TensorFlow Lite gör det möjligt att distribuera modeller på ett större antal plattformar. Kod skriven för tidigare versioner av TensorFlow måste dock skrivas om - ibland bara lite, ibland avsevärt - för att dra största möjliga nytta av nya TensorFlow 2.0-funktioner.

TensorFlow fördelar

Den enskilt största fördelen som TensorFlow ger för maskininlärningsutveckling är abstraktion. Istället för att hantera de detaljerade detaljerna i att implementera algoritmer, eller ta reda på rätt sätt att koppla ut en funktion till en ingång för en annan, kan utvecklaren fokusera på applikationens övergripande logik. TensorFlow tar hand om detaljerna bakom kulisserna.

TensorFlow erbjuder ytterligare bekvämligheter för utvecklare som behöver felsöka och få introspektion i TensorFlow-appar. Det ivriga körningsläget låter dig utvärdera och modifiera varje grafåtgärd separat och transparent, istället för att konstruera hela grafen som ett enda ogenomskinligt objekt och utvärdera allt på en gång. TensorBoard-visualiseringspaketet låter dig inspektera och profilera hur diagram körs via en interaktiv, webbaserad instrumentpanel.

TensorFlow får också många fördelar med stöd av en A-lista kommersiell outfit i Google. Google har inte bara drivit upp den snabba utvecklingen bakom projektet utan skapat många betydande erbjudanden runt TensorFlow som gör det lättare att distribuera och lättare att använda: det ovan nämnda TPU-kislet för snabbare prestanda i Googles moln; ett online-nav för att dela modeller skapade med ramverket; i webbläsaren och mobilvänliga inkarnationer av ramverket; och mycket mer.

En varning: Vissa detaljer i TensorFlows implementering gör det svårt att få helt deterministiska modellutbildningsresultat för vissa träningsjobb. Ibland kan en modell som tränas i ett system variera något från en modell som tränas i ett annat, även när de matas med exakt samma data. Orsakerna till detta är hala - t.ex. hur slumpmässiga siffror sås ut och var eller vissa icke-deterministiska beteenden när man använder GPU: er). Med det sagt är det möjligt att kringgå dessa frågor, och TensorFlows team överväger fler kontroller för att påverka determinismen i ett arbetsflöde.

Relaterad video: Maskininlärning och AI-dechiffrerad

Genom att bryta igenom hype kring maskininlärning och artificiell intelligens, pratar vår panel genom definitionerna och konsekvenserna av tekniken.

TensorFlow vs. tävlingen

TensorFlow konkurrerar med en rad andra maskininlärningsramar. PyTorch, CNTK och MXNet är tre stora ramar som tillgodoser många av samma behov. Nedan har jag noterat var de sticker ut och kommer kort mot TensorFlow.

  • PyTorch , förutom att byggas med Python, och har många andra likheter med TensorFlow: hårdvaruaccelererade komponenter under huven, en mycket interaktiv utvecklingsmodell som möjliggör design-as-you-go-arbete och många användbara komponenter som redan ingår. PyTorch är i allmänhet ett bättre val för snabb utveckling av projekt som måste vara igång på kort tid, men TensorFlow vinner ut för större projekt och mer komplexa arbetsflöden.

  • CNTK , Microsoft Cognitive Toolkit, liksom TensorFlow använder en grafstruktur för att beskriva dataflöde, men fokuserar mest på att skapa neurologiska nätverk för djupt lärande. CNTK hanterar många neurala nätverksjobb snabbare och har en bredare uppsättning API: er (Python, C ++, C #, Java). Men CNTK är för närvarande inte så lätt att lära sig eller distribuera som TensorFlow.

  • Apache MXNet , antaget av Amazon som det främsta ramverket för djupinlärning på AWS, kan skalas nästan linjärt över flera GPU: er och flera maskiner. Det stöder också ett brett utbud av språk-API: er - Python, C ++, Scala, R, JavaScript, Julia, Perl, Go - även om dess inbyggda API: er inte är lika trevliga att arbeta med som TensorFlow.