La oss starte denne opplæringen med TensorFlow introduksjon:
Hva er TensorFlow?
TensorFlow er en åpen kildekode ende-til-ende-plattform for å lage Machine Learning-applikasjoner. Det er et symbolsk mattebibliotek som bruker dataflyt og differensierbar programmering for å utføre forskjellige oppgaver med fokus på trening og inferens av dype nevrale nettverk. Det lar utviklere lage maskinlæringsapplikasjoner ved hjelp av ulike verktøy, biblioteker og fellesskapsressurser.
For tiden er Googles TensorFlow det mest berømte dyplæringsbiblioteket i verden. Google-produkt bruker maskinlæring i alle produktene for å forbedre søkemotoren, oversettelsen, bildetekst eller anbefalinger.
For å gi et konkret eksempel kan Google-brukere oppleve et raskere og mer raffinert søk med AI. Hvis brukeren skriver inn et søkeord i søkefeltet, gir Google en anbefaling om hva som kan være neste ord.
Google ønsker å bruke maskinlæring for å dra nytte av sine enorme datasett for å gi brukerne den beste opplevelsen. Tre forskjellige grupper bruker maskinlæring:
- Forskere
- Dataforskere
- Programmerere.
De kan alle bruke det samme verktøysettet for å samarbeide med hverandre og forbedre effektiviteten.
Google har ikke bare noen data; de har verdens mest massive datamaskin, så Tensor Flow ble bygget i målestokk. TensorFlow er et bibliotek utviklet av Google Brain Team for å akselerere maskinlæring og dyp nevralt nettverksforskning.
Den ble bygget for å kjøre på flere CPUer eller GPUer og til og med mobile operativsystemer, og den har flere wrappers på flere språk som Python, C ++ eller Java.
I denne TensorFlow-opplæringen vil du lære
- Hva er TensorFlow?
- Historie om TensorFlow
- Hvordan TensorFlow fungerer
- TensorFlow Architecture
- Hvor kan Tensorflow løpe?
- Introduksjon til komponenter i TensorFlow
- Hvorfor er TensorFlow populært?
- Liste over fremtredende algoritmer støttet av TensorFlow
- Enkelt TensorFlow-eksempel
- Alternativer for å laste data i TensorFlow
- Lag Tensorflow-rørledning
Historie om TensorFlow
For et par år siden begynte dyp læring å overgå alle andre maskinlæringsalgoritmer når de ga en enorm mengde data. Google så at de kunne bruke disse dype nevrale nettverkene for å forbedre tjenestene:
- Gmail
- Foto
- Googles søkemotor
De bygger et rammeverk som heter Tensorflow for å la forskere og utviklere samarbeide om en AI-modell. Når utviklet og skalert, lar det mange mennesker bruke det.
Den ble først offentliggjort i slutten av 2015, mens den første stabile versjonen dukket opp i 2017. Den er åpen kildekode under Apache Open Source-lisens. Du kan bruke den, endre den og distribuere den modifiserte versjonen mot et gebyr uten å betale noe til Google.
Neste i denne TensorFlow Deep-læringsopplæringen vil vi lære om TensorFlow-arkitektur og hvordan fungerer TensorFlow.
Hvordan TensorFlow fungerer
TensorFlow lar deg bygge dataflytdiagrammer og strukturer for å definere hvordan data beveger seg gjennom en graf ved å ta innganger som en flerdimensjonal matrise kalt Tensor. Den lar deg konstruere et flytskjema over operasjoner som kan utføres på disse inngangene, som går i den ene enden og kommer i den andre enden som utgang.
TensorFlow Architecture
Tensorflow-arkitektur fungerer i tre deler:
- Forbehandling av dataene
- Bygg modellen
- Tren og estimer modellen
Det kalles Tensorflow fordi det tar input som et flerdimensjonalt array, også kjent som tensorer . Du kan konstruere et slags flytskjema over operasjoner (kalt en graf) som du vil utføre på den inngangen. Inngangen går inn i den ene enden, og deretter flyter den gjennom dette systemet med flere operasjoner og kommer ut i den andre enden som utgang.
Dette er grunnen til at det kalles TensorFlow fordi tensoren går i den strømmer gjennom en liste over operasjoner, og så kommer den ut på den andre siden.
Hvor kan Tensorflow løpe?
TensorFlow-maskinvare og programvarekrav kan klassifiseres i
Utviklingsfase: Dette er når du trener modusen. Trening gjøres vanligvis på din stasjonære eller bærbare datamaskin.
Kjør fase eller inferensfase: Når opplæringen er fullført, kan Tensorflow kjøres på mange forskjellige plattformer. Du kan kjøre den videre
- Desktop som kjører Windows, macOS eller Linux
- Cloud som en nettjeneste
- Mobile enheter som iOS og Android
Du kan trene den på flere maskiner, så kan du kjøre den på en annen maskin når du har fått den opplærte modellen.
Modellen kan trenes og brukes på både GPUer og CPUer. GPUer ble opprinnelig designet for videospill. På slutten av 2010 fant Stanford-forskere at GPU også var veldig god på matriseoperasjoner og algebra, slik at det gjør dem veldig raske for å gjøre slike beregninger. Dyp læring er avhengig av mye matriksmultiplikasjon. TensorFlow er veldig rask til å beregne matrisemultiplikasjonen fordi den er skrevet i C ++. Selv om den er implementert i C ++, kan TensorFlow nås og kontrolleres av andre språk, hovedsakelig Python.
Endelig er TensorFlow et viktig trekk ved TensorFlow. TensorBoard gjør det mulig å overvåke grafisk og visuelt hva TensorFlow gjør.
Introduksjon til komponenter i TensorFlow
Tensor
Tensorflows navn er direkte avledet fra kjernen: Tensor . I Tensorflow involverer alle beregninger tensorer. En tensor er en vektor eller matrise med n-dimensjoner som representerer alle typer data. Alle verdier i en tensor har identisk datatype med en kjent (eller delvis kjent) form . Formen på dataene er dimensjonaliteten til matrisen eller matrisen.
En tensor kan stamme fra inngangsdataene eller resultatet av en beregning. I TensorFlow blir alle operasjonene utført i en graf . Grafen er et sett av beregninger som foregår suksessivt. Hver operasjon kalles en op-node og er koblet til hverandre.
Grafen skisserer opsjoner og forbindelser mellom nodene. Verdiene vises imidlertid ikke. Kanten av nodene er tensoren, dvs. en måte å fylle operasjonen med data på.
Grafer
TensorFlow bruker et grafisk rammeverk. Grafen samler og beskriver alle serieberegningene som er gjort under opplæringen. Grafen har mange fordeler:
- Det ble gjort for å kjøre på flere CPUer eller GPUer og til og med mobiloperativsystem
- Portabiliteten til grafen gjør det mulig å bevare beregningene for umiddelbar eller senere bruk. Grafen kan lagres for å bli utført i fremtiden.
- Alle beregningene i grafen gjøres ved å koble tensorer sammen
- En tensor har en node og en kant. Noden bærer den matematiske operasjonen og produserer endepunkter. Kantene kantene forklarer inngang / utgangsforhold mellom noder.
Hvorfor er TensorFlow populært?
TensorFlow er det beste biblioteket av alle fordi det er bygget for å være tilgjengelig for alle. Tensorflow-biblioteket inneholder forskjellige API-er som er bygget i stor skala, dyp læringsarkitektur som CNN eller RNN. TensorFlow er basert på grafberegning; det lar utvikleren visualisere konstruksjonen av nevrale nettverk med Tensorboad. Dette verktøyet er nyttig for å feilsøke programmet. Til slutt er Tensorflow bygget for å distribueres i stor skala. Den kjører på CPU og GPU.
Tensorflow tiltrekker seg den største populariteten på GitHub sammenlignet med de andre rammene for dyp læring.
Liste over fremtredende algoritmer støttet av TensorFlow
Nedenfor er listen over støttede TensorFlow-algoritmer:
Foreløpig har TensorFlow 1.10 en innebygd API for:
- Lineær regresjon: tf.estimator.LinearRegressor
- Klassifisering: tf.estimator.LinearClassifier
- Dyp læringsklassifisering: tf.estimator.DNNClassifier
- Deep learning wipe and deep: tf.estimator.DNNLinearCombinedClassifier
- Booster tre regresjon: tf.estimator.BoostedTreesRegressor
- Klassifisering av forsterket tre: tf.estimator.BoostedTreesClassifier
Enkelt TensorFlow-eksempel
import numpy as npimport tensorflow as tf
I de to første linjene med kode har vi importert tensorflow som tf. Med Python er det vanlig å bruke et kort navn for et bibliotek. Fordelen er å unngå å skrive inn hele navnet på biblioteket når vi trenger å bruke det. For eksempel kan vi importere tensorflow som tf, og ringe tf når vi vil bruke en tensorflow-funksjon
La oss øve på den grunnleggende arbeidsflyten til Tensorflow med enkle TensorFlow-eksempler. La oss lage en beregningsgraf som multipliserer to tall sammen.
I løpet av eksemplet vil vi multiplisere X_1 og X_2 sammen. Tensorflow oppretter en node for å koble til operasjonen. I vårt eksempel kalles det multiplisere. Når grafen er bestemt, multipliserer Tensorflow-beregningsmotorer X_1 og X_2.
TensorFlow Eksempel
Til slutt vil vi kjøre en TensorFlow-økt som kjører beregningsgrafen med verdiene X_1 og X_2 og skriver ut resultatet av multiplikasjonen.
La oss definere X_1 og X_2 inngangsnoder. Når vi oppretter en node i Tensorflow, må vi velge hva slags node vi skal opprette. X1- og X2-nodene vil være en plassholdernode. Plassholderen tildeler en ny verdi hver gang vi foretar en beregning. Vi vil lage dem som en TF-punkt plassholdernode.
Trinn 1: Definer variabelen
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
Når vi oppretter en plassholdernode, må vi sende inn datatypen vil legge til tall her, slik at vi kan bruke en datatype med flytende punkt, la oss bruke tf.float32. Vi må også gi denne noden et navn. Dette navnet vises når vi ser på de grafiske visualiseringene av modellen vår. La oss kalle denne noden X_1 ved å sende inn en parameter kalt navn med verdien X_1, og la oss nå definere X_2 på samme måte. X_2.
Trinn 2: Definer beregningen
multiply = tf.multiply(X_1, X_2, name = "multiply")
Nå kan vi definere noden som gjør multiplikasjonsoperasjonen. I Tensorflow kan vi gjøre det ved å opprette en tf. Multiply-node.
Vi vil passere i X_1- og X_2-nodene til multiplikasjonsnoden. Det forteller tensorflow å koble disse nodene i beregningsgrafen, så vi ber den trekke verdiene fra x og y og multiplisere resultatet. La oss også gi multiplikasjonsnoden navnet multiplisere. Det er hele definisjonen for vår enkle beregningsgraf.
Trinn 3: Utfør operasjonen
For å utføre operasjoner i grafen, må vi lage en økt. I Tensorflow gjøres det av tf.Session (). Nå som vi har en økt, kan vi be økten om å kjøre operasjoner på beregningsgrafen vår ved å ringe økten. For å kjøre beregningen, må vi bruke kjøre.
Når tilleggsoperasjonen kjører, vil den se at den trenger å hente verdiene til X_1 og X_2 noder, så vi må også mate inn verdier for X_1 og X_2. Vi kan gjøre det ved å levere en parameter som heter feed_dict. Vi overfører verdien 1,2,3 for X_1 og 4,5,6 for X_2.
Vi skriver ut resultatene med utskrift (resultat). Vi skal se 4, 10 og 18 for 1x4, 2x5 og 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.]
Alternativer for å laste data i TensorFlow
Det første trinnet før du trener en maskinlæringsalgoritme er å laste inn dataene. Det er to vanlige måter å laste inn data på:
1. Last inn data i minnet: Det er den enkleste metoden. Du laster inn alle dataene dine i minnet som en enkelt matrise. Du kan skrive en Python-kode. Disse kodelinjene er ikke relatert til Tensorflow.
2. Tensorflow datarørledning. Tensorflow har innebygd API som hjelper deg med å laste inn data, utføre operasjonen og mate maskinlæringsalgoritmen enkelt. Denne metoden fungerer veldig bra, spesielt når du har et stort datasett. For eksempel er bildeposter kjent for å være enorme og passer ikke inn i minnet. Datarørledningen administrerer minnet av seg selv
Hvilken løsning å bruke?
Legg data i minnet
Hvis datasettet ditt ikke er for stort, dvs. mindre enn 10 gigabyte, kan du bruke den første metoden. Dataene kan passe inn i minnet. Du kan bruke et kjent bibliotek kalt Pandas til å importere CSV-filer. Du vil lære mer om pandaer i neste opplæring.
Last inn data med Tensorflow-rørledning
Den andre metoden fungerer best hvis du har et stort datasett. For eksempel, hvis du har et datasett på 50 gigabyte, og datamaskinen din bare har 16 gigabyte minne, vil maskinen krasje.
I denne situasjonen må du bygge en Tensorflow-rørledning. Rørledningen vil laste inn data i batch eller liten bit. Hver batch vil bli presset til rørledningen og være klar for opplæringen. Å bygge en rørledning er en utmerket løsning fordi den lar deg bruke parallell databehandling. Det betyr at Tensorflow vil trene modellen på tvers av flere CPUer. Det fremmer beregningen og tillatelsene for å trene kraftige nevrale nettverk.
Du vil se i de neste veiledningene om hvordan du bygger en betydelig rørledning for å mate ditt nevrale nettverk.
I et nøtteskall, hvis du har et lite datasett, kan du laste dataene i minnet med Pandas-biblioteket.
Hvis du har et stort datasett og vil bruke flere CPUer, vil du være mer komfortabel å jobbe med Tensorflow-rørledningen.
Lag Tensorflow-rørledning
I eksemplet før legger vi til manuelt tre verdier for X_1 og X_2. Nå skal vi se hvordan du laster data til Tensorflow.
Trinn 1) Opprett dataene
Først av alt, la oss bruke numpy bibliotek for å generere to tilfeldige verdier.
import numpy as npx_input = np.random.sample((1,2))print(x_input)
[[0.8835775 0.23766977]]
Trinn 2) Opprett plassholderen
Som i forrige eksempel oppretter vi en plassholder med navnet X. Vi må spesifisere tensorens form eksplisitt. I tilfelle vil vi laste en matrise med bare to verdier. Vi kan skrive formen som form = [1,2]
# using a placeholderx = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
Trinn 3) Definer datasettmetoden
Deretter må vi definere datasettet der vi kan fylle ut verdien av plassholderen x. Vi må bruke metoden tf.data.Dataset.from_tensor_slices
dataset = tf.data.Dataset.from_tensor_slices(x)
Trinn 4) Opprett rørledningen
I trinn fire må vi initialisere rørledningen der dataene vil flyte. Vi må lage en iterator med make_initializable_iterator. Vi kaller det iterator. Så må vi kalle denne iteratoren for å mate neste batch data, get_next. Vi kaller dette trinnet get_next. Merk at det i vårt eksempel bare er en batch med data med bare to verdier.
iterator = dataset.make_initializable_iterator()get_next = iterator.get_next()
Trinn 5) Utfør operasjonen
Det siste trinnet ligner på forrige eksempel. Vi starter en økt, og vi kjører operasjonsiteratoren. Vi mater feed_dict med verdien generert av numpy. Disse to verdiene fyller plassholderen x. Så kjører vi get_next for å skrive 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]
Sammendrag
TensorFlow betyr: TensorFlow er det mest berømte dybdelæringsbiblioteket de siste årene. En utøver som bruker TensorFlow kan bygge en hvilken som helst dyp læringsstruktur, som CNN, RNN eller enkelt kunstig nevralt nettverk.
TensorFlow brukes mest av akademikere, startups og store selskaper. Google bruker TensorFlow i nesten alle daglige Google-produkter, inkludert Gmail, Photo og Google Search Engine.
Google Brain-teamet har utviklet TensorFlow for å fylle gapet mellom forskere og produktutviklere. I 2015 gjorde de TensorFlow offentlig; den vokser raskt i popularitet. I dag er TensorFlow det dype læringsbiblioteket med flest arkiver på GitHub.
Utøvere bruker Tensorflow fordi det er enkelt å distribuere i stor skala. Den er bygget for å fungere i skyen eller på mobile enheter som iOs og Android.
Tensorflow fungerer i en økt. Hver økt er definert av en graf med forskjellige beregninger. Et enkelt eksempel kan være å multiplisere til tall. I Tensorflow kreves det tre trinn:
- Definer variabelen
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
- Definer beregningen
multiply = tf.multiply(X_1, X_2, name = "multiply")
- Utfør operasjonen
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 praksis i Tensorflow er å lage en rørledning for å laste inn dataene. Hvis du følger disse fem trinnene, vil du kunne laste data til TensorFLow
- Lag dataene
import numpy as npx_input = np.random.sample((1,2))print(x_input)
- Lag plassholderen
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
- Definer datasettmetoden
dataset = tf.data.Dataset.from_tensor_slices(x)
- Lag rørledningen
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
- Utfør programmet
with tf.Session() as sess:sess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next))