Låt oss starta den här handledningen med TensorFlow-introduktion:
Vad är TensorFlow?
TensorFlow är en öppen källkod end-to-end-plattform för att skapa Machine Learning-applikationer. Det är ett symboliskt mattebibliotek som använder dataflöde och differentierbar programmering för att utföra olika uppgifter med fokus på träning och inferens av djupa neurala nätverk. Det gör det möjligt för utvecklare att skapa applikationer för maskininlärning med hjälp av olika verktyg, bibliotek och samhällsresurser.
För närvarande är det mest kända djupinlärningsbiblioteket i världen Googles TensorFlow. Googles produkt använder maskininlärning i alla sina produkter för att förbättra sökmotorn, översättningen, bildtexten eller rekommendationerna.
För att ge ett konkret exempel kan Google-användare uppleva en snabbare och mer förfinad sökning med AI. Om användaren skriver ett sökord i sökfältet ger Google en rekommendation om vad som kan vara nästa ord.
Google vill använda maskininlärning för att dra nytta av sina massiva datamängder för att ge användarna den bästa upplevelsen. Tre olika grupper använder maskininlärning:
- Forskare
- Dataforskare
- Programmerare.
De kan alla använda samma verktygssats för att samarbeta med varandra och förbättra deras effektivitet.
Google har inte bara några data; de har världens mest massiva dator, så Tensor Flow byggdes i skala. TensorFlow är ett bibliotek utvecklat av Google Brain Team för att påskynda maskininlärning och djupneurala nätverksforskning.
Den byggdes för att köras på flera processorer eller GPU: er och till och med mobila operativsystem, och den har flera omslag på flera språk som Python, C ++ eller Java.
I den här TensorFlow-självstudien lär du dig
- Vad är TensorFlow?
- Historia av TensorFlow
- Hur TensorFlow fungerar
- TensorFlow-arkitektur
- Var kan Tensorflow köras?
- Introduktion till komponenter i TensorFlow
- Varför är TensorFlow populärt?
- Lista över framstående algoritmer som stöds av TensorFlow
- Enkelt TensorFlow-exempel
- Alternativ för att ladda data i TensorFlow
- Skapa Tensorflow-pipeline
Historia av TensorFlow
För några år sedan började djupt lärande att överträffa alla andra maskininlärningsalgoritmer när de gav en enorm mängd data. Google såg att det kunde använda dessa djupa neurala nätverk för att förbättra sina tjänster:
- Gmail
- Foto
- Googles sökmotor
De bygger en ram som heter Tensorflow för att låta forskare och utvecklare arbeta tillsammans på en AI-modell. När den väl utvecklats och skalats tillåter den många människor att använda den.
Den publicerades först i slutet av 2015, medan den första stabila versionen dök upp 2017. Den är öppen källkod under Apache Open Source-licens. Du kan använda den, ändra den och distribuera den modifierade versionen mot en avgift utan att betala något till Google.
Nästa i denna TensorFlow Deep-lärande handledning lär vi oss om TensorFlow-arkitektur och hur fungerar TensorFlow.
Hur TensorFlow fungerar
Med TensorFlow kan du bygga dataflödesdiagram och strukturer för att definiera hur data rör sig genom en graf genom att ta ingångar som en flerdimensionell matris som kallas Tensor. Det låter dig konstruera ett flödesschema över operationer som kan utföras på dessa ingångar, som går i ena änden och kommer i den andra änden som utgång.
TensorFlow-arkitektur
Tensorflow-arkitekturen fungerar i tre delar:
- Förbehandling av data
- Bygg modellen
- Träna och uppskatta modellen
Det kallas Tensorflow eftersom det tar inmatning som en flerdimensionell matris, även känd som tensorer . Du kan konstruera ett slags flödesschema över operationer (kallas en graf) som du vill utföra på den ingången. Ingången går in i ena änden och sedan flyter den genom detta system med flera operationer och kommer ut i den andra änden som utdata.
Det är därför det kallas TensorFlow eftersom tensorn går in i den flyter genom en lista över operationer och sedan kommer den ut på andra sidan.
Var kan Tensorflow köras?
TensorFlow-maskinvara och programvarukrav kan klassificeras i
Utvecklingsfas: Det här är när du tränar läget. Träning sker vanligtvis på din stationära eller bärbara dator.
Run Phase eller Inference Phase: När träningen är klar kan Tensorflow köras på många olika plattformar. Du kan köra den på
- Skrivbord som kör Windows, macOS eller Linux
- Moln som en webbtjänst
- Mobila enheter som iOS och Android
Du kan träna den på flera maskiner och sedan kan du köra den på en annan maskin när du väl har fått den utbildade modellen.
Modellen kan utbildas och användas på både grafikprocessorer och processorer. GPU: er designades ursprungligen för videospel. I slutet av 2010 fann Stanford-forskare att GPU också var mycket bra på matrisoperationer och algebra så att det gör dem väldigt snabba för att göra denna typ av beräkningar. Djupinlärning är beroende av mycket matrixmultiplikation. TensorFlow är mycket snabb på att beräkna matrismultiplikationen eftersom den är skriven i C ++. Även om det är implementerat i C ++, kan TensorFlow nås och styras av andra språk, främst Python.
Slutligen är TensorFlow ett viktigt inslag i TensorFlow. TensorBoard gör det möjligt att övervaka grafiskt och visuellt vad TensorFlow gör.
Introduktion till komponenter i TensorFlow
Tensor
Tensorflows namn härrör direkt från dess kärnramverk: Tensor . I Tensorflow involverar alla beräkningar tensorer. En tensor är en vektor eller matris med n-dimensioner som representerar alla typer av data. Alla värden i en tensor har identisk datatyp med en känd (eller delvis känd) form . Datans form är matrisen eller matrisen.
En tensor kan härröra från ingångsdata eller resultatet av en beräkning. I TensorFlow utförs alla operationer i ett diagram . Grafen är en uppsättning beräkningar som sker successivt. Varje operation kallas en op-nod och är ansluten till varandra.
Grafen beskriver ops och anslutningar mellan noder. Värdena visas dock inte. Kanten på noderna är tensorn, dvs ett sätt att fylla operationen med data.
Grafer
TensorFlow använder sig av ett diagramram. Diagrammet samlar in och beskriver alla seriberäkningar som gjorts under träningen. Grafen har många fördelar:
- Det gjordes för att köras på flera processorer eller GPU: er och till och med mobiloperativsystem
- Portabiliteten i diagrammet gör det möjligt att bevara beräkningarna för omedelbar eller senare användning. Grafen kan sparas för att kunna köras i framtiden.
- Alla beräkningar i diagrammet görs genom att koppla samman tensorer
- En tensor har en nod och en kant. Noden bär den matematiska operationen och producerar slutpunkter utgångar. Kanterna kanterna förklarar in- / utgångsförhållandena mellan noder.
Varför är TensorFlow populärt?
TensorFlow är det bästa biblioteket av alla eftersom det är byggt för att vara tillgängligt för alla. Tensorflow-biblioteket innehåller olika API: er som byggs i stor skala djupinlärningsarkitektur som CNN eller RNN. TensorFlow bygger på grafberäkning; det gör det möjligt för utvecklaren att visualisera byggandet av neuralnätverket med Tensorboad. Detta verktyg är till hjälp för att felsöka programmet. Slutligen är Tensorflow byggt för att distribueras i stor skala. Den körs på CPU och GPU.
Tensorflow lockar den största populariteten på GitHub jämfört med de andra djupinlärningsramarna.
Lista över framstående algoritmer som stöds av TensorFlow
Nedan följer listan över TensorFlow-algoritmer som stöds:
För närvarande har TensorFlow 1.10 ett inbyggt API för:
- Linjär regression: tf.estimator.LinearRegressor
- Klassificering: tf.estimator.LinearClassifier
- Deep learning-klassificering: tf.estimator.DNNClassifier
- Deep learning wipe and deep: tf.estimator.DNNLinearCombinedClassifier
- Booster trädregression: tf.estimator.BoostedTreesRegressor
- Förstärkt trädklassificering: tf.estimator.BoostedTreesClassifier
Enkelt TensorFlow-exempel
import numpy as npimport tensorflow as tf
I de första två kodraderna har vi importerat tensorflow som tf. Med Python är det vanligt att använda ett kort namn för ett bibliotek. Fördelen är att undvika att skriva hela biblioteksnamnet när vi behöver använda det. Vi kan till exempel importera tensorflow som tf och ringa tf när vi vill använda en tensorflow-funktion
Låt oss öva på det elementära arbetsflödet i Tensorflow med enkla TensorFlow-exempel. Låt oss skapa ett beräkningsdiagram som multiplicerar två nummer tillsammans.
Under exemplet multiplicerar vi X_1 och X_2 tillsammans. Tensorflow skapar en nod för att ansluta operationen. I vårt exempel kallas det multiplicera. När grafen bestäms kommer Tensorflow-beräkningsmotorer att multiplicera tillsammans X_1 och X_2.
TensorFlow Exempel
Slutligen kommer vi att köra en TensorFlow-session som kör beräkningsdiagrammet med värdena X_1 och X_2 och skriver ut resultatet av multiplikationen.
Låt oss definiera X_1 och X_2 inmatningsnoder. När vi skapar en nod i Tensorflow måste vi välja vilken nod som ska skapas. X1- och X2-noderna kommer att vara en platshållarnod. Platshållaren tilldelar ett nytt värde varje gång vi gör en beräkning. Vi skapar dem som en TF-platsplatshållarnod.
Steg 1: Definiera variabeln
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
När vi skapar en platshållarnod måste vi skicka in datatypen kommer att lägga till nummer här så att vi kan använda en flytande datatyp, låt oss använda tf.float32. Vi måste också ge denna nod ett namn. Det här namnet kommer att visas när vi tittar på de grafiska visualiseringarna av vår modell. Låt oss namnge denna nod X_1 genom att skicka in en parameter som heter namn med värdet X_1 och nu ska vi definiera X_2 på samma sätt. X_2.
Steg 2: Definiera beräkningen
multiply = tf.multiply(X_1, X_2, name = "multiply")
Nu kan vi definiera noden som gör multiplikationsoperationen. I Tensorflow kan vi göra det genom att skapa en tf.multiply-nod.
Vi skickar i X_1- och X_2-noderna till multiplikationsnoden. Det berättar tensorflöde att länka dessa noder i beräkningsdiagrammet, så vi ber det att dra värdena från x och y och multiplicera resultatet. Låt oss också ge multiplikationsnoden namnet multiplicera. Det är hela definitionen för vår enkla beräkningsgraf.
Steg 3: Utför operationen
För att utföra operationer i diagrammet måste vi skapa en session. I Tensorflow görs det av tf.Session (). Nu när vi har en session kan vi be sessionen att köra operationer på vår beräkningsgraf genom att ringa session. För att köra beräkningen måste vi använda run.
När tilläggsoperationen körs kommer den att se att den måste ta värdena för X_1- och X_2-noderna, så vi måste också mata in värden för X_1 och X_2. Vi kan göra det genom att tillhandahålla en parameter som heter feed_dict. Vi skickar värdet 1,2,3 för X_1 och 4,5,6 för X_2.
Vi skriver ut resultaten med utskrift (resultat). Vi bör se 4, 10 och 18 för 1x4, 2x5 och 3x6
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")multiply = tf.multiply(X_1, X_2, name = "multiply")with tf.Session() as session:result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})print(result)
[ 4. 10. 18.]
Alternativ för att ladda data i TensorFlow
Det första steget innan du tränar en maskininlärningsalgoritm är att ladda in data. Det finns två allmänna sätt att ladda data:
1. Ladda data i minnet: Det är den enklaste metoden. Du laddar alla dina data i minnet som en enda matris. Du kan skriva en Python-kod. Kodraderna är inte relaterade till Tensorflow.
2. Tensorflödesdata pipeline. Tensorflow har inbyggt API som hjälper dig att ladda data, utföra operationen och mata maskininlärningsalgoritmen enkelt. Denna metod fungerar mycket bra, särskilt när du har en stor dataset. Exempelvis är bildposter kända för att vara enorma och passar inte in i minnet. Datapipelinen hanterar minnet av sig själv
Vilken lösning ska du använda?
Ladda data i minnet
Om din dataset inte är för stor, dvs. mindre än 10 gigabyte, kan du använda den första metoden. Data kan passa in i minnet. Du kan använda ett känt bibliotek som heter Pandas för att importera CSV-filer. Du kommer att lära dig mer om pandor i nästa handledning.
Ladda data med Tensorflow-pipeline
Den andra metoden fungerar bäst om du har en stor dataset. Till exempel, om du har en dataset på 50 gigabyte och din dator bara har 16 gigabyte minne, kommer maskinen att krascha.
I den här situationen måste du bygga en Tensorflow-pipeline. Rörledningen laddar data i batch eller liten bit. Varje sats skjuts till rörledningen och är redo för träningen. Att bygga en rörledning är en utmärkt lösning eftersom det gör att du kan använda parallell datoranvändning. Det betyder att Tensorflow kommer att träna modellen över flera processorer. Det främjar beräkningen och tillstånd för träning av kraftfulla neurala nätverk.
Du kommer att se i nästa handledning om hur man bygger en betydande pipeline för att mata ditt neurala nätverk.
I ett nötskal, om du har en liten dataset kan du ladda data i minnet med Pandas-biblioteket.
Om du har en stor dataset och vill använda flera processorer blir du bekvämare att arbeta med Tensorflow-pipeline.
Skapa Tensorflow-pipeline
I exemplet tidigare lägger vi manuellt till tre värden för X_1 och X_2. Nu ser vi hur man laddar data till Tensorflow.
Steg 1) Skapa data
Först och främst, låt oss använda numpy-biblioteket för att generera två slumpmässiga värden.
import numpy as npx_input = np.random.sample((1,2))print(x_input)
[[0.8835775 0.23766977]]
Steg 2) Skapa platshållaren
Som i föregående exempel skapar vi en platshållare med namnet X. Vi måste ange tensorns form uttryckligen. Om vi laddar en matris med bara två värden. Vi kan skriva formen som form = [1,2]
# using a placeholderx = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
Steg 3) Definiera datamängdsmetoden
Därefter måste vi definiera datauppsättningen där vi kan fylla värdet på platshållaren x. Vi måste använda metoden tf.data.Dataset.from_tensor_slices
dataset = tf.data.Dataset.from_tensor_slices(x)
Steg 4) Skapa rörledningen
I steg fyra måste vi initiera rörledningen där data kommer att strömma. Vi måste skapa en iterator med make_initializable_iterator. Vi kallar det iterator. Då måste vi kalla den här itatorn för att mata nästa batch av data, get_next. Vi heter detta steg get_next. Observera att i vårt exempel finns det bara en sats data med endast två värden.
iterator = dataset.make_initializable_iterator()get_next = iterator.get_next()
Steg 5) Utför operationen
Det sista steget liknar föregående exempel. Vi initierar en session och kör operationens iterator. Vi matar feed_dict med det värde som genereras av numpy. Dessa två värden fyller platshållaren x. Sedan kör vi get_next för att skriva ut resultatet.
with tf.Session() as sess:# feed the placeholder with datasess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next)) # output [ 0.52374458 0.71968478]
[0.8835775 0.23766978]
Sammanfattning
TensorFlow betyder: TensorFlow är det mest kända djupinlärningsbiblioteket de senaste åren. En utövare som använder TensorFlow kan bygga vilken djupinlärningsstruktur som helst, som CNN, RNN eller enkelt artificiellt neuralt nätverk.
TensorFlow används mest av akademiker, startups och stora företag. Google använder TensorFlow i nästan alla dagliga produkter från Google inklusive Gmail, Photo och Google Search Engine.
Google Brain-teamets utvecklade TensorFlow för att fylla klyftan mellan forskare och produktutvecklare. 2015 gjorde de TensorFlow offentligt; det växer snabbt i popularitet. Numera är TensorFlow det djupa inlärningsbiblioteket med flest arkiv på GitHub.
Utövare använder Tensorflow eftersom det är lätt att använda i stor skala. Den är byggd för att fungera i molnet eller på mobila enheter som iOS och Android.
Tensorflow fungerar i en session. Varje session definieras av ett diagram med olika beräkningar. Ett enkelt exempel kan vara att multiplicera till nummer. I Tensorflow krävs tre steg:
- Definiera variabeln
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
- Definiera beräkningen
multiply = tf.multiply(X_1, X_2, name = "multiply")
- Utför operationen
with tf.Session() as session:result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})print(result)
En vanlig praxis i Tensorflow är att skapa en pipeline för att ladda data. Om du följer dessa fem steg kommer du att kunna ladda data till TensorFLow
- Skapa data
import numpy as npx_input = np.random.sample((1,2))print(x_input)
- Skapa platshållaren
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
- Definiera datasetmetoden
dataset = tf.data.Dataset.from_tensor_slices(x)
- Skapa rörledningen
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
- Kör programmet
with tf.Session() as sess:sess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next))