Mis on TensorFlow? Kuidas see töötab? Sissejuhatus & Arhitektuur

Lang L: none (table-of-contents):

Anonim

Alustame seda õpetust TensorFlow sissejuhatusega:

Mis on TensorFlow?

TensorFlow on avatud lähtekoodiga end-to-end platvorm masinõppe rakenduste loomiseks. See on sümboolne matemaatikakogu, mis kasutab andmevoogu ja diferentseeritavat programmeerimist erinevate ülesannete täitmiseks, mis on suunatud sügavate närvivõrkude treenimisele ja järeldamisele. See võimaldab arendajatel luua masinõpperakendusi, kasutades erinevaid tööriistu, teeke ja kogukonna ressursse.

Praegu on maailma tuntuim süvaõppekogu Google'i TensorFlow. Google'i toode kasutab masinõpet kõigis oma toodetes otsingumootori, tõlke, pildiallkirjade või soovituste täiustamiseks.

Konkreetse näite toomiseks saavad Google'i kasutajad AI abil kiiremat ja täpsemat otsingut kogeda. Kui kasutaja sisestab märksõna otsinguribale, annab Google soovituse selle kohta, mis võiks olla järgmine sõna.

Google soovib masinõppe abil ära kasutada nende massilisi andmekogumeid, et anda kasutajatele parim kogemus. Masinõpet kasutavad kolm erinevat rühma:

  • Teadlased
  • Andmeteadlased
  • Programmeerijad.

Nad saavad kõik kasutada sama tööriistakomplekti omavahelise koostöö tegemiseks ja oma tõhususe parandamiseks.

Google'il pole lihtsalt andmeid; neil on maailma kõige massilisem arvuti, nii et Tensor Flow ehitati mastaapselt. TensorFlow on raamatukogu, mille on välja töötanud Google Brain Team, et kiirendada masinõpet ja sügavaid närvivõrkude uuringuid.

See oli ehitatud töötama mitmel protsessoril või GPU-l ja isegi mobiilsel operatsioonisüsteemil ning sellel on mitu ümbrist mitmetes keeltes nagu Python, C ++ või Java.

Selles TensorFlow õpetuses saate teada

  • Mis on TensorFlow?
  • TensorFlow ajalugu
  • Kuidas TensorFlow töötab
  • TensorFlow arhitektuur
  • Kus saab Tensorflow joosta?
  • Sissejuhatus TensorFlow komponentidesse
  • Miks on TensorFlow populaarne?
  • TensorFlow poolt toetatud silmapaistvate algoritmide loend
  • Lihtne TensorFlow näide
  • Andmete TensorFlow'i laadimise võimalused
  • Looge Tensorflow torujuhe

TensorFlow ajalugu

Paar aastat tagasi hakkas sügav õppimine massiivse andmemahu andmisel edestama kõiki teisi masinõppe algoritme. Google nägi, et ta võiks oma teenuste parandamiseks kasutada neid sügavaid närvivõrke:

  • Gmail
  • Foto
  • Google'i otsingumootor

Nad loovad raamistiku nimega Tensorflow, et teadlased ja arendajad saaksid tehisintellekti mudeli kallal koos töötada. Kui see on välja töötatud ja muudetud, võimaldab see paljudel inimestel seda kasutada.

See avalikustati esmakordselt 2015. aasta lõpus, samas kui esimene stabiilne versioon ilmus 2017. aastal. See on avatud lähtekoodiga Apache Open Source'i litsentsi all. Saate seda kasutada, modifitseerida ja levitada muudetud versiooni tasu eest Google'ile midagi maksmata.

Järgmisena selles TensorFlow Deep õppeõpetuses õpime tundma TensorFlow arhitektuuri ja kuidas TensorFlow töötab.

Kuidas TensorFlow töötab

TensorFlow võimaldab teil luua andmevoo graafikuid ja struktuure, et määratleda, kuidas andmed graafiku kaudu liiguvad, võttes sisendeid mitmemõõtmelise massiivina nimega Tensor. See võimaldab teil koostada nende sisenditega tehtavate toimingute vooskeemi, mis läheb ühte otsa ja tuleb väljundina teise otsa.

TensorFlow arhitektuur

Tensorflow arhitektuur töötab kolmes osas:

  • Andmete eeltöötlus
  • Ehitage mudel
  • Treenige ja hinnake mudelit

Seda nimetatakse Tensorflow'ks, kuna see võtab sisendit mitmemõõtmelise massiivina, tuntud ka kui tensorid . Saate koostada omamoodi vooskeemi toimingutest (nn graafik), mida soovite selle sisendiga teha. Sisend läheb ühte otsa ja seejärel voolab see läbi mitme toimingu süsteemi ja väljub teisest otsast väljundina.

Sellepärast nimetatakse seda TensorFlow'ks, kuna sinna sisenev tensor voolab läbi toimingute loendi ja siis tuleb see välja teiselt poolt.

Kus saab Tensorflow joosta?

TensorFlow riistvara ja tarkvara nõuded võib liigitada

Arendusfaas: see on siis, kui treenite režiimi. Treening toimub tavaliselt töölaual või sülearvutis.

Run Phase ehk järeldusfaas: kui treening on läbi viidud, saab Tensorflow'i käivitada mitmel erineval platvormil. Saate seda käivitada

  • Lauaarvuti, milles töötab Windows, macOS või Linux
  • Pilv kui veebiteenus
  • Mobiilseadmed nagu iOS ja Android

Saate seda treenida mitmel masinal, siis saate seda kasutada ka teise masinaga, kui olete saanud väljaõppinud mudeli.

Mudelit saab koolitada ja kasutada nii GPU-de kui ka protsessorite puhul. GPU-d olid algselt mõeldud videomängude jaoks. 2010. aasta lõpus leidsid Stanfordi teadlased, et graafikaprotsessor on ka maatriksioperatsioonide ja algebra osas väga hea, nii et see muudab nad seda tüüpi arvutuste tegemiseks väga kiireks. Sügav õppimine tugineb paljudele maatriksite korrutamisele. TensorFlow on maatriksi korrutise arvutamisel väga kiire, kuna see on kirjutatud tähega C ++. Kuigi seda rakendatakse C ++ keeles, saab TensorFlow'ile juurde pääseda ja seda saavad kontrollida peamiselt teised keeled, näiteks Python.

Lõpuks on TensorFlow märkimisväärne omadus TensorBoard. TensorBoard võimaldab graafiliselt ja visuaalselt jälgida, mida TensorFlow teeb.

Sissejuhatus TensorFlow komponentidesse

Tensor

Tensorflow nimi tuleneb otseselt selle põhiraamistikust: Tensor . Tensorflow'is hõlmavad kõik arvutused tenoreid. Tensor on n-mõõtmete vektor või maatriks , mis esindab igat tüüpi andmeid. Kõigil tensori väärtustel on sama (või osaliselt tuntud) kujuga andmetüüp . Andmete kuju on maatriksi või massiivi mõõtmed.

Tensor võib pärineda sisendandmetest või arvutuse tulemustest. TensorFlow'is viiakse kõik toimingud läbi graafiku sees . Graafik on järjestikuste arvutuste kogum. Iga toimingut nimetatakse op-sõlmeks ja need on omavahel ühendatud.

Graafikul on toodud sõlmede vahelised ops ja ühendused. Kuid see ei näita väärtusi. Sõlmede serv on tensor, st viis, kuidas operatsiooni andmetega täita.

Graafikud

TensorFlow kasutab graafiraamistikku. Graafik koondab ja kirjeldab kõiki koolituse käigus tehtud seeriaarvutusi. Graafikul on palju eeliseid:

  • See tehti mitmel protsessoril või GPU-l ja isegi mobiilsel operatsioonisüsteemil töötamiseks
  • Graafiku teisaldatavus võimaldab arvutusi kohe või hilisemaks kasutamiseks säilitada. Graafiku saab salvestada, et see tulevikus käivitada.
  • Kõik graafikus olevad arvutused tehakse tenorite omavahel ühendamise teel
    • Tensoril on sõlm ja serv. Sõlm kannab matemaatilist toimingut ja loob lõpp-punktide väljundid. Servad servad selgitavad sõlmede vahelisi sisendi / väljundi suhteid.

Miks on TensorFlow populaarne?

TensorFlow on parim raamatukogu, kuna see on ehitatud kõigile ligipääsetavaks. Tensorflow raamatukogu sisaldab erinevat API-d, mis on ehitatud ulatuslikul sügava õppe arhitektuuril, näiteks CNN või RNN. TensorFlow põhineb graafi arvutamisel; see võimaldab arendajal visualiseerida Tensorboadiga närvivõrgu ehitust. See tööriist on abiks programmi silumisel. Lõpuks on Tensorflow loodud ulatuslikuks kasutamiseks. See töötab protsessoril ja GPU-l.

Tensorflow tõmbab GitHubis suurimat populaarsust võrreldes teiste sügava õppe raamistikuga.

TensorFlow poolt toetatud silmapaistvate algoritmide loend

Allpool on toetatud TensorFlow algoritmide loend:

Praegu on TensorFlow 1.10-l sisseehitatud API:

  • Lineaarne regressioon: tf.estimator.LinearRegressor
  • Klassifikatsioon: tf.imimator.LinearClassifier
  • Sügava õppimise klassifikatsioon: tf.estimator.DNNClassifier
  • Sügav õppimine pühkida ja sügav: tf.estimator.DNNLinearCombinedClassifier
  • Tugipuu regressioon: tf.estimator.BoostedTreesRegressor
  • Suurendatud puu klassifikatsioon: tf.estimator.BoostedTreesClassifier

Lihtne TensorFlow näide

import numpy as npimport tensorflow as tf

Kahes esimeses koodireas oleme importinud tensorflow kui tf. Pythoni puhul on üldine tava kasutada teegi lühinime. Eeliseks on vältida teegi täisnime sisestamist, kui peame seda kasutama. Näiteks võime importida tensorflow tf-na ja helistada tf-le, kui soovime kasutada tensorflow-funktsiooni

Harjutame Tensorflow'i elementaarset töövoogu lihtsate TensorFlow näidetega. Koostame arvutusgraafiku, mis korrutab kaks arvu kokku.

Näite käigus korrutame X_1 ja X_2 kokku. Tensorflow loob toimingu ühendamiseks sõlme. Meie näites nimetatakse seda korrutamiseks. Kui graafik on kindlaks määratud, korrutatakse Tensorflow arvutusmootorid X_1 ja X_2 kokku.

TensorFlow näide

Lõpuks käivitame TensorFlow seansi, mis käivitab arvutusgraafiku väärtustega X_1 ja X_2 ning printib korrutamise tulemuse.

Määratleme sisendsõlmed X_1 ja X_2. Kui loome Tensorflowis sõlme, peame valima, millist sõlme luua. Sõlmed X1 ja X2 on kohahoidjasõlm. Kohatäide määrab iga kord, kui arvutame, uue väärtuse. Loome need TF-dot-kohahoidja sõlmena.

1. samm: määrake muutuja

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

Kohatäitesõlme loomisel peame edastama, et andmetüüp lisab siia numbreid, et saaksime kasutada ujukoma andmetüüpi, kasutagem tf.float32. Samuti peame sellele sõlmele nime panema. See nimi ilmub siis, kui vaatame oma mudeli graafilisi visualiseeringuid. Nimetame selle sõlme X_1, edastades parameetri nimega nimi väärtusega X_1 ja määratleme nüüd X_2 samamoodi. X_2.

2. samm: määrake arvutus

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

Nüüd saame määratleda sõlme, mis teeb korrutustoimingu. Tensorflow'is saame seda teha, luues tf.multiply sõlme.

Edastame sõlmedes X_1 ja X_2 korrutussõlme. See käsib tensorflow'il need sõlmed arvutusgraafikus linkida, seega palume tal tõmmata väärtused x-st ja y-st ning korrutada tulemus. Anname korrutussõlmele ka nime korrutada. See on meie lihtsa arvutusgraafiku kogu määratlus.

3. samm: käivitage toiming

Graafikus toimingute sooritamiseks peame looma seansi. Tensorflow'is teeb seda tf.Session (). Nüüd, kui meil on seanss, võime paluda seansil käivitada toimingud meie arvutusgraafikul, kutsudes seanssi. Arvutamise käivitamiseks peame kasutama run.

Kui liitmisoperatsioon töötab, peab ta nägema, et see peab haarama sõlmede X_1 ja X_2 väärtused, nii et peame sisestama ka väärtused X_1 ja X_2 jaoks. Saame seda teha, sisestades parameetri nimega feed_dict. Edastame X_1 jaoks väärtuse 1,2,3 ja X_2 puhul 4,5,6.

Trükime tulemused väljatrükiga (tulemus). 1x4, 2x5 ja 3x6 puhul peaksime nägema 4, 10 ja 18

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.]

Andmete TensorFlow'i laadimise võimalused

Esimene samm enne masinõppealgoritmi treenimist on andmete laadimine. Andmete laadimiseks on kaks tavalist viisi:

1. Laadige andmed mällu: see on kõige lihtsam meetod. Laadite kõik oma andmed mällu ühe massiivina. Saate kirjutada Pythoni koodi. Need koodiread pole Tensorflow'iga seotud.

2. Tensorflow andmeedastusjoon. Tensorflow'l on sisseehitatud API, mis aitab teil andmeid laadida, toiminguid teha ja masinõppe algoritmi hõlpsalt toita. See meetod töötab väga hästi, eriti kui teil on suur andmekogum. Näiteks on pildikirjed teadaolevalt tohutud ja ei mahu mällu. Andmetorustik haldab mälu ise

Millist lahendust kasutada?

Laadige andmed mällu

Kui teie andmekogum ei ole liiga suur, st vähem kui 10 gigabaiti, võite kasutada esimest meetodit. Andmed mahuvad mällu. CSV-failide importimiseks võite kasutada kuulsat raamatukogu Pandas. Pandade kohta saate lisateavet järgmises õpetuses.

Andmete laadimine torujuhtmega Tensorflow

Teine meetod töötab kõige paremini, kui teil on suur andmekogum. Näiteks kui teil on 50 gigabaidise suurusega andmekogum ja teie arvutil on ainult 16 gigabaiti mälu, siis masin jookseb kokku.

Selles olukorras peate ehitama Tensorflow torujuhtme. Gaasijuhe laadib andmed partiidena või väikese tükina. Iga partii lükatakse torujuhtmele ja on koolituseks valmis. Torujuhtme ehitamine on suurepärane lahendus, kuna see võimaldab teil kasutada paralleelset arvutust. See tähendab, et Tensorflow koolitab mudelit mitme protsessori vahel. See soodustab võimsa närvivõrgu arvutamist ja võimaldab treenida.

Järgmistes õpetustes näete, kuidas ehitada märkimisväärne torujuhe oma närvivõrgu toitmiseks.

Lühidalt, kui teil on väike andmekogum, saate andmed Pandase teegiga mällu laadida.

Kui teil on suur andmekogum ja soovite kasutada mitut protsessorit, on teil Tensorflowi torujuhtmega mugavam töötada.

Looge Tensorflow torujuhe

Varasemas näites lisame käsitsi X_1 ja X_2 kolm väärtust. Nüüd näeme, kuidas andmeid Tensorflowi laadida.

1. samm. Looge andmed

Kõigepealt kasutame kahe juhusliku väärtuse genereerimiseks numpy teeki.

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

[[0.8835775 0.23766977]]

2. samm. Looge kohatäide

Nagu eelmises näites, loome ka kohahoidja nimega X. Me peame selgesõnaliselt määrama tensori kuju. Juhul laadime massiivi ainult kahe väärtusega. Kuju saame kirjutada kujul = [1,2]

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

3. samm. Määrake andmekogumi meetod

järgmisena peame määratlema andmekogumi, kus saame täita kohahoidja x väärtuse. Peame kasutama meetodit tf.data.Dataset.from_tensor_slices

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

4. samm. Looge torujuhe

Neljandas etapis peame lähtestama torujuhtme, kuhu andmed liiguvad. Peame looma iteraatori koos make_initializable_iteratoriga. Me nimetame seda iteraatoriks. Siis peame sellele iteraatorile helistama, et edastada järgmine andmepartii get_next. Nimetame selle sammu get_next. Pange tähele, et meie näites on ainult üks andmepakett, millel on ainult kaks väärtust.

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

5. samm. Tehke toiming

Viimane samm on sarnane eelmise näitega. Algatame seansi ja käivitame operatsioonide iteraatori. Anname feed_dictile numbpy loodud väärtuse. Need kaks väärtust täidavad kohahoidja x. Seejärel käivitame tulemuse printimiseks saidi get_next.

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]

Kokkuvõte

TensorFlow tähendus: TensorFlow on viimaste aastate kuulsaim süvaõppekogu. TensorFlow-d kasutav praktik saab ehitada mis tahes sügava õppestruktuuri, näiteks CNN, RNN või lihtsa kunstliku närvivõrgu.

TensorFlowi kasutavad enamasti teadlased, idufirmad ja suured ettevõtted. Google kasutab TensorFlow'i peaaegu kõigis Google'i igapäevastes toodetes, sealhulgas Gmailis, Photo'is ja Google'i otsingumootoris.

Google Brain meeskonna väljatöötatud TensorFlow täidab tühimiku teadlaste ja tootearendajate vahel. 2015. aastal tegid nad TensorFlow avalikuks; selle populaarsus kasvab kiiresti. Tänapäeval on TensorFlow sügava õppega raamatukogu, kus on kõige rohkem GitHubi hoidlaid.

Praktikud kasutavad Tensorflow't, kuna seda on lihtne mastaabis juurutada. See on loodud töötama pilves või mobiilseadmetes nagu iOs ja Android.

Tensorflow töötab seansil. Iga seanss on määratletud erineva arvutusega graafikuga. Lihtne näide võib olla korrutamine arvuni. Rakenduses Tensorflow on vaja kolme sammu:

  1. Määratlege muutuja
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
  1. Määrake arvutus
multiply = tf.multiply(X_1, X_2, name = "multiply")
  1. Tehke toiming
with tf.Session() as session:result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})print(result)

Tensorflowi üks levinud praktika on andmete laadimiseks torujuhtme loomine. Kui järgite neid viit sammu, saate andmeid laadida teenusesse TensorFLow

  1. Looge andmed
import numpy as npx_input = np.random.sample((1,2))print(x_input)
  1. Looge kohatäide
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
  1. Määratlege andmekogumi meetod
dataset = tf.data.Dataset.from_tensor_slices(x)
  1. Looge torujuhe
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
  1. Käivitage programm
with tf.Session() as sess:sess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next))