Hvad er TensorFlow? Hvordan det virker? Introduktion & Arkitektur

Indholdsfortegnelse:

Anonim

Lad os starte denne tutorial med TensorFlow introduktion:

Hvad er TensorFlow?

TensorFlow er en open-source ende-til-ende platform til oprettelse af Machine Learning-applikationer. Det er et symbolsk matematikbibliotek, der bruger dataflow og differentieret programmering til at udføre forskellige opgaver med fokus på træning og slutning af dybe neurale netværk. Det giver udviklere mulighed for at oprette maskinlæringsapplikationer ved hjælp af forskellige værktøjer, biblioteker og samfundsressourcer.

I øjeblikket er Googles TensorFlow det mest berømte dyb læringsbibliotek i verden. Google-produkt bruger maskinindlæring i alle sine produkter til at forbedre søgemaskinen, oversættelse, billedtekst eller anbefalinger.

For at give et konkret eksempel kan Google-brugere opleve en hurtigere og mere raffineret søgning med AI. Hvis brugeren skriver et søgeord i søgefeltet, giver Google en anbefaling om, hvad der kan være det næste ord.

Google vil bruge maskinlæring til at udnytte deres massive datasæt for at give brugerne den bedste oplevelse. Tre forskellige grupper bruger maskinindlæring:

  • Forskere
  • Dataforskere
  • Programmører.

De kan alle bruge det samme værktøjssæt til at samarbejde med hinanden og forbedre deres effektivitet.

Google har ikke bare nogen data; de har verdens mest massive computer, så Tensor Flow blev bygget i målestok. TensorFlow er et bibliotek udviklet af Google Brain Team til at fremskynde maskinlæring og dyb neurale netværksforskning.

Det blev bygget til at køre på flere CPU'er eller GPU'er og endda mobile operativsystemer, og det har flere indpakninger på flere sprog som Python, C ++ eller Java.

I denne TensorFlow-tutorial lærer du

  • Hvad er TensorFlow?
  • Historie af TensorFlow
  • Sådan fungerer TensorFlow
  • TensorFlow-arkitektur
  • Hvor kan Tensorflow køre?
  • Introduktion til komponenter i TensorFlow
  • Hvorfor er TensorFlow populær?
  • Liste over fremtrædende algoritmer understøttet af TensorFlow
  • Simpel TensorFlow-eksempel
  • Muligheder for at indlæse data i TensorFlow
  • Opret Tensorflow-rørledning

Historie af TensorFlow

For et par år siden begyndte dyb læring at overgå alle andre maskinindlæringsalgoritmer, når de gav en enorm mængde data. Google så, at det kunne bruge disse dybe neurale netværk til at forbedre sine tjenester:

  • Gmail
  • Foto
  • Google-søgemaskine

De bygger en ramme kaldet Tensorflow for at lade forskere og udviklere arbejde sammen om en AI-model. Når det er udviklet og skaleret, giver det mange mennesker mulighed for at bruge det.

Den blev først offentliggjort i slutningen af ​​2015, mens den første stabile version dukkede op i 2017. Den er open source under Apache Open Source-licens. Du kan bruge det, ændre det og omfordele den modificerede version mod et gebyr uden at betale noget til Google.

Næste i denne TensorFlow Deep-læringsvejledning lærer vi om TensorFlow-arkitekturen, og hvordan fungerer TensorFlow.

Sådan fungerer TensorFlow

TensorFlow giver dig mulighed for at oprette dataflytningsgrafer og strukturer til at definere, hvordan data bevæger sig gennem en graf ved at tage input som et flerdimensionelt array kaldet Tensor. Det giver dig mulighed for at konstruere et rutediagram over operationer, der kan udføres på disse indgange, som går i den ene ende og kommer i den anden ende som output.

TensorFlow-arkitektur

Tensorflow-arkitektur fungerer i tre dele:

  • Forbehandling af dataene
  • Byg modellen
  • Træn og estimer modellen

Det kaldes Tensorflow, fordi det tager input som et flerdimensionelt array, også kendt som tensorer . Du kan konstruere en slags rutediagram over operationer (kaldet en graf), som du vil udføre på denne input. Indgangen går ind i den ene ende, og derefter flyder den gennem dette system med flere operationer og kommer ud i den anden ende som output.

Derfor kaldes det TensorFlow, fordi tensoren går i den strømmer gennem en liste over operationer, og så kommer den ud på den anden side.

Hvor kan Tensorflow køre?

TensorFlow-hardware og softwarekrav kan klassificeres i

Udviklingsfase: Dette er når du træner tilstanden. Træning udføres normalt på din stationære eller bærbare computer.

Kør fase eller slutningsfase: Når træningen er udført, kan Tensorflow køres på mange forskellige platforme. Du kan køre den videre

  • Desktop, der kører Windows, macOS eller Linux
  • Cloud som en webservice
  • Mobile enheder som iOS og Android

Du kan træne det på flere maskiner, så kan du køre det på en anden maskine, når du først har den uddannede model.

Modellen kan trænes og bruges på både GPU'er og CPU'er. GPU'er blev oprindeligt designet til videospil. I slutningen af ​​2010 fandt Stanford-forskere, at GPU også var meget god til matrixoperationer og algebra, så det gør dem meget hurtige til at udføre denne slags beregninger. Dyb læring er afhængig af en masse matrixmultiplikation. TensorFlow er meget hurtig til at beregne matrixmultiplikationen, fordi den er skrevet i C ++. Selvom det er implementeret i C ++, kan TensorFlow primært tilgås og styres af andre sprog, Python.

Endelig er TensorBoard et væsentligt træk ved TensorFlow. TensorBoard gør det muligt at overvåge grafisk og visuelt, hvad TensorFlow gør.

Introduktion til komponenter i TensorFlow

Tensor

Tensorflow's navn er direkte afledt af dets kerneramme: Tensor . I Tensorflow involverer alle beregninger tensorer. En tensor er en vektor eller matrix med n-dimensioner, der repræsenterer alle typer data. Alle værdier i en tensor har identisk datatype med en kendt (eller delvist kendt) form . Datas form er matrixens eller matrixens dimensionalitet.

En tensor kan stamme fra inputdataene eller resultatet af en beregning. I TensorFlow udføres alle operationer i en graf . Grafen er et sæt beregninger, der finder sted successivt. Hver operation kaldes en op-knude og er forbundet med hinanden.

Grafen skitserer ops og forbindelser mellem noderne. Det viser dog ikke værdierne. Kanten af ​​noderne er tensoren, dvs. en måde at udfylde operationen med data på.

Grafer

TensorFlow bruger en graframme. Grafen samler og beskriver alle serieberegninger, der er udført under træningen. Grafen har mange fordele:

  • Det blev gjort for at køre på flere CPU'er eller GPU'er og endda mobiloperativsystem
  • Portabiliteten af ​​grafen gør det muligt at bevare beregningerne til øjeblikkelig eller senere brug. Grafen kan gemmes for at blive udført i fremtiden.
  • Alle beregninger i grafen udføres ved at forbinde tensorer sammen
    • En tensor har en knude og en kant. Noden bærer den matematiske operation og producerer slutpunktsudgange. Kanterne kanterne forklarer input / output-forholdet mellem noder.

Hvorfor er TensorFlow populær?

TensorFlow er det bedste bibliotek af alle, fordi det er bygget til at være tilgængeligt for alle. Tensorflow-biblioteket inkorporerer forskellige API'er, der er bygget i skala dyb læringsarkitektur som CNN eller RNN. TensorFlow er baseret på grafberegning; det giver udvikleren mulighed for at visualisere opbygningen af ​​det neurale netværk med Tensorboad. Dette værktøj er nyttigt til fejlfinding af programmet. Endelig er Tensorflow bygget til at blive implementeret i målestok. Det kører på CPU og GPU.

Tensorflow tiltrækker den største popularitet på GitHub sammenlignet med de andre rammer for dyb læring.

Liste over fremtrædende algoritmer understøttet af TensorFlow

Nedenfor er listen over understøttede TensorFlow-algoritmer:

I øjeblikket har TensorFlow 1.10 en indbygget API til:

  • Lineær regression: tf.estimator.LinearRegressor
  • Klassifikation: tf.estimator.LinearClassifier
  • Deep learning-klassifikation: tf.estimator.DNNClassifier
  • Deep learning wipe and deep: tf.estimator.DNNLinearCombinedClassifier
  • Booster træ regression: tf.estimator.BoostedTreesRegressor
  • Klassificering af boostet træ: tf.estimator.BoostedTreesClassifier

Simpel TensorFlow-eksempel

import numpy as npimport tensorflow as tf

I de to første kodelinjer har vi importeret tensorflow som tf. Med Python er det en almindelig praksis at bruge et kort navn til et bibliotek. Fordelen er at undgå at skrive bibliotekets fulde navn, når vi har brug for det. For eksempel kan vi importere tensorflow som tf og ringe til tf, når vi vil bruge en tensorflow-funktion

Lad os øve den elementære arbejdsgang i Tensorflow med enkle TensorFlow-eksempler. Lad os oprette en beregningsgraf, der multiplicerer to tal sammen.

Under eksemplet multiplicerer vi X_1 og X_2 sammen. Tensorflow opretter en node til at forbinde operationen. I vores eksempel kaldes det multiplicere. Når grafen er bestemt, multipliceres Tensorflow-beregningsmotorer sammen X_1 og X_2.

TensorFlow-eksempel

Endelig kører vi en TensorFlow-session, der kører beregningsgrafen med værdierne X_1 og X_2 og udskriver resultatet af multiplikationen.

Lad os definere X_1 og X_2 input noder. Når vi opretter en node i Tensorflow, skal vi vælge, hvilken type node vi vil oprette. X1- og X2-noder vil være en pladsholderknude. Pladsholderen tildeler en ny værdi hver gang vi foretager en beregning. Vi opretter dem som en TF dot-pladsholderknude.

Trin 1: Definer variablen

X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")

Når vi opretter en pladsholdernode, skal vi videresende datatypen tilføjer tal her, så vi kan bruge en datatype med flydende punkt, lad os bruge tf.float32. Vi skal også give dette knudepunkt et navn. Dette navn vises, når vi ser på de grafiske visualiseringer af vores model. Lad os navngive denne node X_1 ved at sende en parameter kaldet navn med værdien X_1 og lad os nu definere X_2 på samme måde. X_2.

Trin 2: Definer beregningen

multiply = tf.multiply(X_1, X_2, name = "multiply")

Nu kan vi definere den node, der udfører multiplikationsoperationen. I Tensorflow kan vi gøre det ved at oprette en tf.multiply-node.

Vi passerer i X_1- og X_2-noderne til multiplikationsnoden. Det fortæller tensorflow at forbinde disse knudepunkter i beregningsgrafen, så vi beder den om at trække værdierne fra x og y og multiplicere resultatet. Lad os også give multiplikationsnoden navnet multiplicere. Det er hele definitionen for vores enkle beregningsgraf.

Trin 3: Udfør operationen

For at udføre operationer i grafen skal vi oprette en session. I Tensorflow gøres det af tf.Session (). Nu hvor vi har en session, kan vi bede sessionen om at køre operationer på vores beregningsgraf ved at kalde session. For at køre beregningen skal vi bruge run.

Når tilføjelsesoperationen kører, vil den se, at den skal hente værdierne for X_1- og X_2-noder, så vi skal også indføre værdier for X_1 og X_2. Vi kan gøre det ved at levere en parameter kaldet feed_dict. Vi sender værdien 1,2,3 for X_1 og 4,5,6 for X_2.

Vi udskriver resultaterne med udskrivning (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.]

Muligheder for at indlæse data i TensorFlow

Det første trin inden træning af en maskinlæringsalgoritme er at indlæse dataene. Der er to fælles måder at indlæse data på:

1. Indlæs data i hukommelsen: Det er den enkleste metode. Du indlæser alle dine data i hukommelsen som et enkelt array. Du kan skrive en Python-kode. Disse kodelinjer er ikke relateret til Tensorflow.

2. Tensorflow datarørledning. Tensorflow har indbygget API, der hjælper dig med at indlæse data, udføre operationen og føde maskinindlæringsalgoritmen let. Denne metode fungerer meget godt, især når du har et stort datasæt. For eksempel er billedoptegnelser kendt for at være enorme og passer ikke ind i hukommelsen. Datarørledningen styrer hukommelsen af ​​sig selv

Hvilken løsning skal du bruge?

Indlæs data i hukommelsen

Hvis dit datasæt ikke er for stort, dvs. mindre end 10 gigabyte, kan du bruge den første metode. Dataene kan passe ind i hukommelsen. Du kan bruge et berømt bibliotek kaldet Pandas til at importere CSV-filer. Du lærer mere om pandaer i den næste vejledning.

Indlæs data med Tensorflow-rørledning

Den anden metode fungerer bedst, hvis du har et stort datasæt. For eksempel, hvis du har et datasæt på 50 gigabyte, og din computer kun har 16 gigabyte hukommelse, så går maskinen ned.

I denne situation skal du opbygge en Tensorflow-rørledning. Rørledningen indlæser dataene i batch eller lille del. Hver batch vil blive skubbet til rørledningen og være klar til træningen. Opbygning af en rørledning er en fremragende løsning, fordi det giver dig mulighed for at bruge parallel computing. Det betyder, at Tensorflow træner modellen på tværs af flere CPU'er. Det fremmer beregningen og tilladelserne til træning af stærkt neuralt netværk.

Du vil se i de næste vejledninger om, hvordan man bygger en betydelig pipeline til at fodre dit neurale netværk.

I en nøddeskal, hvis du har et lille datasæt, kan du indlæse dataene i hukommelsen med Pandas-biblioteket.

Hvis du har et stort datasæt, og du vil bruge flere CPU'er, vil du være mere behagelig at arbejde med Tensorflow-pipeline.

Opret Tensorflow-rørledning

I eksemplet før tilføjer vi manuelt tre værdier for X_1 og X_2. Nu vil vi se, hvordan man indlæser data til Tensorflow.

Trin 1) Opret dataene

Lad os først og fremmest bruge numpy-biblioteket til at generere to tilfældige værdier.

import numpy as npx_input = np.random.sample((1,2))print(x_input)

[[0.8835775 0.23766977]]

Trin 2) Opret pladsholderen

Som i det foregående eksempel opretter vi en pladsholder med navnet X. Vi skal specifikt angive tensorens form. I tilfælde af at vi indlæser en matrix med kun to værdier. Vi kan skrive formen som form = [1,2]

# using a placeholderx = tf.placeholder(tf.float32, shape=[1,2], name = 'X')

Trin 3) Definer datasættemetoden

Dernæst skal vi definere datasættet, hvor vi kan udfylde værdien af ​​pladsholderen x. Vi er nødt til at bruge metoden tf.data.Dataset.from_tensor_slices

dataset = tf.data.Dataset.from_tensor_slices(x)

Trin 4) Opret rørledningen

I trin fire skal vi initialisere rørledningen, hvor dataene flyder. Vi er nødt til at oprette en iterator med make_initializable_iterator. Vi kalder det iterator. Så er vi nødt til at kalde denne iterator for at give den næste batch af data, get_next. Vi navngiver dette trin get_next. Bemærk, at der i vores eksempel kun er en batch af data med kun to værdier.

iterator = dataset.make_initializable_iterator()get_next = iterator.get_next()

Trin 5) Udfør operationen

Det sidste trin svarer til det foregående eksempel. Vi starter en session, og vi kører operationens iterator. Vi fodrer feed_dict med den værdi, der genereres af numpy. Disse to værdier udfylder pladsholderen x. Derefter kører vi get_next for at udskrive 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]

Resumé

TensorFlow betyder: TensorFlow er det mest berømte dyb læringsbibliotek de seneste år. En praktiserende læge, der bruger TensorFlow, kan opbygge enhver dyb læringsstruktur, såsom CNN, RNN eller simpelt kunstigt neuralt netværk.

TensorFlow bruges mest af akademikere, startups og store virksomheder. Google bruger TensorFlow i næsten alle Googles daglige produkter inklusive Gmail, Photo og Google Search Engine.

Google Brain-teamets udviklede TensorFlow til at udfylde hullet mellem forskere og produktudviklere. I 2015 offentliggjorde de TensorFlow; det vokser hurtigt i popularitet. I dag er TensorFlow biblioteket med dyb læring med flest arkiver på GitHub.

Udøvere bruger Tensorflow, fordi det er let at implementere i skala. Det er bygget til at arbejde i skyen eller på mobile enheder som iO'er og Android.

Tensorflow fungerer i en session. Hver session er defineret af en graf med forskellige beregninger. Et simpelt eksempel kan være at gange til nummer. I Tensorflow kræves der tre trin:

  1. Definer variablen
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
  1. Definer beregningen
multiply = tf.multiply(X_1, X_2, name = "multiply")
  1. Udfø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 almindelig praksis i Tensorflow er at oprette en pipeline til at indlæse dataene. Hvis du følger disse fem trin, kan du indlæse data til TensorFLow

  1. Opret dataene
import numpy as npx_input = np.random.sample((1,2))print(x_input)
  1. Opret pladsholderen
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
  1. Definer datasætmetoden
dataset = tf.data.Dataset.from_tensor_slices(x)
  1. Opret rørledningen
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
  1. Udfør programmet
with tf.Session() as sess:sess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next))