Hvad er TensorFlow? Hvordan det virker? Introduktion & Architecture

Lad os starte denne tutorial med TensorFlow-introduktion:

Hvad er TensorFlow?

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

I øjeblikket er det mest berømte deep learning-bibliotek i verden Googles TensorFlow. Google-produktet bruger maskinlæring i alle dets produkter til at forbedre søgemaskinen, oversættelsen, billedteksterne eller anbefalingerne.

TensorFlow eksempel

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

TensorFlow eksempel
TensorFlow eksempel

Google ønsker at bruge maskinlæring til at udnytte deres enorme datasæt til at give brugerne den bedste oplevelse. Tre forskellige grupper bruger maskinlæring:

  • Forskere
  • Datavidenskabsfolk
  • 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 til at skalere. TensorFlow er et bibliotek udviklet af Google Brain Team til at accelerere maskinlæring og forskning i dyb neurale netværk.

Den blev bygget til at køre på flere CPU'er eller GPU'er og endda mobil operating-systemer, og det har flere indpakninger på flere sprog som Python, C + + or Java.

Historien om TensorFlow

For et par år siden begyndte deep learning at overgå al anden maskinlæring algorithms når du giver en massiv 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 at lade forskere og udviklere arbejde sammen om en AI-model. Når den først er udviklet og skaleret, giver den mange mennesker mulighed for at bruge den.

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 den, ændre den og videredistribuere den modificerede version mod et gebyr uden at betale noget til Google.

Næste i denne TensorFlow Deep learning tutorial vil vi lære om TensorFlow architecture og hvordan virker TensorFlow.

Sådan fungerer TensorFlow

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

TensorFlow Architecture

Tensorflow archiTecture fungerer i tre dele:

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

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

Dette er grunden til, at det kaldes TensorFlow, fordi tensoren går i, det flyder gennem en liste over operationer, og så kommer det 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 foregår normalt på din stationære eller bærbare computer.

Run Phase eller Inference Phase: Når træningen er færdig, kan Tensorflow køres på mange forskellige platforme. Du kan køre den på

  • Desktop 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 har den trænede model.

Modellen kan trænes og bruges på GPU'er såvel som CPU'er. GPU'er blev oprindeligt designet til videospil. I slutningen af ​​2010 fandt Stanford-forskere ud af, at GPU også var meget god til matrix operationer og algebra, så det gør dem meget hurtige til at udføre denne form for 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 tilgås og kontrolleres af andre sprog hovedsageligt, Python.

Endelig er en væsentlig egenskab ved TensorFlow TensorBoard. Det TensorBoard gør det muligt at overvåge grafisk og visuelt, hvad TensorFlow laver.

TensorFlow-komponenter

tensor

Tensorflows navn er direkte afledt af dets kerneramme: tensor. I Tensorflow involverer alle beregninger tensorer. En tensor er en vektor or matrix af n-dimensioner, der repræsenterer alle typer data. Alle værdier i en tensor har identisk datatype med en kendt (eller delvist kendt) forme. Formen af ​​data er dimensionaliteten af ​​matrixen eller arrayet.

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

Grafen skitserer operationerne og forbindelserne mellem noderne. Den viser dog ikke værdierne. Kanten af ​​noderne er tensoren, dvs. en måde at udfylde operation med data.

Grafer

TensorFlow gør brug af en graframme. Grafen samler og beskriver alle serieberegninger 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 mobil operating system
  • Portabiliteten af ​​grafen gør det muligt at bevare beregningerne til øjeblikkelig eller later brug. Grafen kan gemmes for at blive udført i fremtiden.
  • Alle beregningerne i grafen udføres ved at forbinde tensorer sammen
    • En tensor har en node og en kant. Noden bærer det matematiske operation og producerer et endepunkts output. 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 til bygget i skala deep learning architecture som CNN eller RNN. TensorFlow er baseret på grafberegning; det giver udvikleren mulighed for at visualisere konstruktionen af ​​det neurale netværk med Tensorboad. Dette værktøj er nyttigt til at fejlfinde programmet. Endelig er Tensorflow bygget til at være deployed i skala. Den kører på CPU og GPU.

Tensorflow tiltrækker den største popularitet på GitHub sammenlignet med den anden deep learning-ramme.

TensorFlow Algorithms

Nedenfor er algorithms understøttet af TensorFlow:

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 og dyb: tf.estimator.DNNLinearCombinedClassifier
  • Booster tree regression: tf.estimator.BoostedTreesRegressor
  • Boosted træklassificering: tf.estimator.BoostedTreesClassifier

Sådan fungerer beregninger i TensorFlow

import numpy as np
import tensorflow as tf

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

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

I løbet af eksemplet vil vi gange X_1 og X_2 sammen. Tensorflow vil oprette en node til at forbinde operation. I vores eksempel kaldes det multiplicere. Når grafen er bestemt, vil Tensorflow-beregningsmotorer multiplicere X_1 og X_2 sammen.

Beregninger fungerer i TensorFlow
TensorFlow eksempel

Til sidst 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 noderne. Når vi opretter en node i Tensorflow, skal vi vælge, hvilken slags node der skal oprettes. X1 og X2 noderne vil være en pladsholder node. Pladsholderen tildeler en ny værdi, hver gang vi laver en beregning. Vi vil oprette dem som en TF-dot pladsholder node.

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 pladsholder node, er vi nødt til at videregive datatypen vil tilføje numbers her, så vi kan bruge en flydende-komma-datatype, lad os bruge tf.float32. Vi skal også give denne node et navn. Dette navn vil dukke op, når vi ser på de grafiske visualiseringer af vores model. Lad os navngive denne node X_1 ved at indsætte 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 multiplikationen operation. I Tensorflow kan vi gøre det ved at oprette en tf.multiply node.

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

Trin 3: Udfør operation

At udføre operationer i grafen, skal vi oprette en session. I Tensorflow udfø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øjelsen operation kører, vil den se, at den skal have fat i værdierne for X_1 og X_2 noderne, så vi skal også indlæse værdier for X_1 og X_2. Det kan vi gøre ved at angive 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 print(result). Vi skulle se 4, 10 og 18 for 1×4, 2×5 og 3×6

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 skridt før træning a maskinlæringsalgoritme er at indlæse data. Der er to almindelige 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 datapipeline: Tensorflow har indbygget API, der hjælper dig med at indlæse data, udføre operation og foder maskinlæringsalgoritmen nemt. Denne metode fungerer meget godt, især når du har et stort datasæt. For eksempel er billedregistreringer kendt for at være enorme og passer ikke ind i hukommelsen. Datapipelinen styrer hukommelsen af ​​sig selv

Hvilken løsning skal man 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 vil lære mere om pandaer i den næste tutorial.

Indlæs data med Tensorflow-pipeline

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, vil maskinen gå ned.

I denne situation skal du bygge en Tensorflow-rørledning. Pipelinen vil indlæse dataene i batch eller små bidder. Hver batch vil blive skubbet til pipeline og være klar til træningen. At bygge en pipeline er en fremragende løsning, fordi den 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 giver mulighed for træning af kraftfulde neurale netværk.

Du vil se i de næste tutorials om, hvordan du 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 bibliotek.

Hvis du har et stort datasæt, og du ønsker at gøre brug af flere CPU'er, vil du være mere komfortabel med at arbejde med Tensorflow-pipeline.

Sådan opretter du TensorFlow Pipeline

Her er trinene til at oprette en TensorFlow-pipeline:

I eksemplet før tilføjede 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

Først og fremmest, lad os bruge numpy-biblioteket til at generere to tilfældige værdier.

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

[[0.8835775 0.23766977]]

Trin 2) Opret pladsholderen

Ligesom i det foregående eksempel opretter vi en pladsholder med navnet X. Vi skal specificere formen på tensoren eksplicit. I tilfælde af at vi indlæser et array med kun to værdier. Vi kan skrive formen som form=[1,2]

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

Trin 3) Definer datasætmetoden

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

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

Trin 4) Opret pipeline

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

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

Trin 5) Udfør operation

Det sidste trin ligner det forrige eksempel. Vi starter en session, og vi kører operation iterator. Vi fodrer feed_dict med værdien genereret af bedøvet. Disse to værdier vil udfylde pladsholderen x. Så kører vi get_next for at udskrive resultatet.

with tf.Session() as sess:
    # feed the placeholder with data
    sess.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 deep learning-bibliotek de seneste år. En praktiserende læge, der bruger TensorFlow, kan bygge enhver dyb læringsstruktur, såsom CNN, RNN eller simple kunstige neurale netværk.
  • TensorFlow bruges mest af akademikere, startups og store virksomheder. Google bruger TensorFlow i næsten alle Googles daglige produkter inklusive Gmail, Foto og Google søgemaskine.
  • Google Brain-teamets udviklede TensorFlow for at udfylde hullet mellem forskere og produktudviklere. I 2015 offentliggjorde de TensorFlow; det er hurtigt growing i popularitet. I dag er TensorFlow det dybe læringsbibliotek med flest repositories på GitHub.
  • Praktiserende læger bruger Tensorflow, fordi det er nemt at implementere i skala. Den er bygget til at fungere i skyen eller på mobile enheder som iOS 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 tal. I Tensorflow kræves 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 operation
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, vil du være i stand til at indlæse data til TensorFLow:

  1. Opret dataene
import numpy as np
x_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 pipeline
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))