Kas yra „TensorFlow“? Kaip tai veikia? Įvadas & Architektūra

Pradėkime šią pamoką su „TensorFlow“ įžanga:

Kas yra „TensorFlow“?

„TensorFlow“ yra atvirojo kodo „nuo galo iki galo“ platforma, skirta kurti mašininio mokymosi programas. Tai simbolinė matematikos biblioteka, naudojanti duomenų srautą ir diferencijuojamą programavimą, atliekant įvairias užduotis, orientuotas į giliųjų nervinių tinklų mokymą ir išvadas. Tai leidžia kūrėjams kurti mašininio mokymosi programas naudojant įvairius įrankius, bibliotekas ir bendruomenės išteklius.

Šiuo metu garsiausia giluminio mokymosi biblioteka pasaulyje yra „Google“ „TensorFlow“. „Google“ produktas naudoja mašininį mokymąsi visuose savo produktuose, kad pagerintų paieškos variklį, vertimą, antraštes ar rekomendacijas.

Pateikdamas konkretų pavyzdį, „Google“ vartotojai gali greičiau ir patobulinti paiešką naudodami dirbtinį intelektą. Jei vartotojas paieškos juostoje įveda raktinį žodį, „Google“ pateikia rekomendaciją, koks galėtų būti kitas žodis.

„Google“ nori naudoti mašininį mokymąsi, kad pasinaudotų didžiuliais jų duomenų rinkiniais, kad vartotojams būtų suteikta geriausia patirtis. Mašininį mokymąsi naudoja trys skirtingos grupės:

  • Tyrėjai
  • Duomenų mokslininkai
  • Programuotojai.

Jie visi gali naudoti tą patį įrankių rinkinį, kad galėtų bendradarbiauti ir pagerinti savo efektyvumą.

„Google“ neturi tik duomenų; jie turi masiškiausią pasaulyje kompiuterį, todėl „Tensor Flow“ buvo sukurtas pagal mastą. „TensorFlow“ yra biblioteka, kurią sukūrė „Google Brain Team“, kad paspartintų mašininį mokymąsi ir gilų neuroninių tinklų tyrimus.

Jis buvo sukurtas veikti keliuose procesoriuose ar GPU ir net mobiliosiose operacinėse sistemose, be to, jis turi keletą įvyniojimų keliomis kalbomis, tokiomis kaip „Python“, „C ++“ ar „Java“.

Šioje „TensorFlow“ pamokoje sužinosite

  • Kas yra „TensorFlow“?
  • „TensorFlow“ istorija
  • Kaip veikia „TensorFlow“
  • „TensorFlow“ architektūra
  • Kur gali veikti „Tensorflow“?
  • Įvadas į „TensorFlow“ komponentus
  • Kodėl „TensorFlow“ yra populiarus?
  • Žinomų algoritmų, palaikomų „TensorFlow“, sąrašas
  • Paprastas „TensorFlow“ pavyzdys
  • Duomenų įkėlimo į „TensorFlow“ parinktys
  • Sukurkite „Tensorflow“ vamzdyną

„TensorFlow“ istorija

Prieš porą metų, suteikiant didžiulį duomenų kiekį, gilus mokymasis pradėjo pranokti visus kitus mašininio mokymosi algoritmus. „Google“ suprato, kad galėtų naudoti šiuos giliuosius neuroninius tinklus savo paslaugoms tobulinti:

  • „Gmail“
  • Nuotrauka
  • „Google“ paieškos variklis

Jie sukuria sistemą, vadinamą „ Tensorflow“ , kad mokslininkai ir kūrėjai galėtų dirbti kartu su dirbtinio intelekto modeliu. Sukurtas ir pakeistas, daugeliui žmonių tai leidžia naudoti.

Pirmą kartą ji buvo paviešinta 2015 m. Pabaigoje, o pirmoji stabili versija pasirodė 2017 m. Tai yra atvirojo kodo licencija pagal „Apache Open Source“. Galite jį naudoti, modifikuoti ir perskirstyti modifikuotą versiją už tam tikrą mokestį nieko nemokėdami „Google“.

Toliau šioje „TensorFlow Deep“ mokymosi pamokoje sužinosime apie „TensorFlow“ architektūrą ir kaip veikia „TensorFlow“.

Kaip veikia „TensorFlow“

„TensorFlow“ leidžia jums sukurti duomenų srauto grafikus ir struktūras, kad apibrėžtumėte, kaip duomenys juda per diagramą, priimdami įvestis kaip daugialypę masyvą, vadinamą „Tensor“. Tai leidžia jums sukurti operacijų, kurias galima atlikti su šiais įėjimais, schemą, kuri eina viename gale, o kitame - kaip išėjimas.

„TensorFlow“ architektūra

„Tensorflow“ architektūra veikia iš trijų dalių:

  • Išankstinis duomenų apdorojimas
  • Sukurkite modelį
  • Mokykite ir įvertinkite modelį

Jis vadinamas „Tensorflow“, nes įvestis yra daugialypė masyvas, dar vadinamas tensorais . Galite sukurti tam tikrą operacijų schemą (vadinamą diagrama), kurią norite atlikti su tuo įėjimu. Įvestis eina viename gale, tada ji teka per šią kelių operacijų sistemą ir išeina iš kito galo kaip išvestis.

Štai kodėl jis vadinamas „TensorFlow“, nes tenoras eina per operacijų sąrašą, o tada išeina iš kitos pusės.

Kur gali veikti „Tensorflow“?

„TensorFlow“ aparatinės ir programinės įrangos reikalavimus galima suskirstyti į

Kūrimo etapas: Tai yra, kai jūs mokote režimą. Mokymai paprastai atliekami darbalaukyje ar nešiojamame kompiuteryje.

„Run Phase“ arba „Inference Phase“: Baigus treniruotę, „Tensorflow“ galima vykdyti daugelyje skirtingų platformų. Galite jį paleisti

  • Stalinis kompiuteris, kuriame veikia „Windows“, „MacOS“ arba „Linux“
  • Debesis kaip žiniatinklio paslauga
  • Mobilieji įrenginiai, pvz., „IOS“ ir „Android“

Jūs galite mokyti jį keliose mašinose, tada galite paleisti jį kita mašina, kai tik turėsite apmokytą modelį.

Modelis gali būti mokomas ir naudojamas GPU, taip pat procesoriuose. Iš pradžių GPU buvo sukurti vaizdo žaidimams. 2010 m. Pabaigoje Stanfordo mokslininkai nustatė, kad GPU taip pat labai gerai veikia matricos operacijas ir algebras, todėl tai labai greitai leidžia atlikti tokius skaičiavimus. Gilus mokymasis priklauso nuo daugybės matricų dauginimo. „TensorFlow“ labai greitai apskaičiuoja matricos dauginimą, nes jis parašytas C ++. Nors „TensorFlow“ yra įdiegtas C ++, prieigą prie jo gali valdyti ir kitos kalbos, daugiausia „Python“.

Galiausiai, reikšminga „TensorFlow“ savybė yra „TensorBoard“. „TensorBoard“ leidžia grafiškai ir vizualiai stebėti, ką daro „TensorFlow“.

Įvadas į „TensorFlow“ komponentus

Tensorius

„Tensorflow“ vardas tiesiogiai kilęs iš jo pagrindinės struktūros: „ Tensor“ . Programoje „Tensorflow“ visi skaičiavimai apima tensorius. Tensorius yra n matmenų vektorius arba matrica , vaizduojanti visų tipų duomenis. Visos tensoriaus reikšmės turi identišką duomenų tipą su žinoma (arba iš dalies žinoma) forma . Duomenų forma yra matricos ar masyvo matmenys.

Tensorius gali būti gaunamas iš įvesties duomenų arba skaičiavimo rezultato. „TensorFlow“ programoje visos operacijos atliekamos grafiko viduje . Grafikas yra skaičiavimo rinkinys, kuris vyksta nuosekliai. Kiekviena operacija vadinama op mazgu ir yra sujungtos viena su kita.

Grafike pateikiamos operacijos ir jungtys tarp mazgų. Tačiau vertės nerodomos. Mazgų kraštas yra tensorius, ty būdas užpildyti operaciją duomenimis.

Grafikai

„TensorFlow“ naudoja grafiko struktūrą. Grafike surenkami ir aprašomi visi mokymų metu atlikti skaičiavimai. Grafike yra daugybė privalumų:

  • Tai buvo padaryta norint paleisti kelis procesorius ar GPU ir net mobiliąją operacinę sistemą
  • Grafiko perkeliamumas leidžia išsaugoti skaičiavimus, kad juos būtų galima naudoti nedelsiant ar vėliau. Grafiką galima išsaugoti, kad jis būtų vykdomas ateityje.
  • Visi grafiko skaičiavimai atliekami sujungiant tenzorus
    • Tensorius turi mazgą ir kraštą. Mazgas atlieka matematinę operaciją ir sukuria galinių taškų išvestis. Briaunos, briaunos, paaiškina įvesties / išvesties santykius tarp mazgų.

Kodėl „TensorFlow“ yra populiarus?

„TensorFlow“ yra geriausia biblioteka, nes ji sukurta taip, kad būtų prieinama visiems. „Tensorflow“ bibliotekoje yra skirtinga API, sukurta masto mokymosi architektūroje, pvz., CNN ar RNN. „TensorFlow“ remiasi grafiko skaičiavimu; tai leidžia kūrėjui vizualizuoti neuroninio tinklo statybą naudojant „Tensorboad“. Šis įrankis yra naudingas derinant programą. Galiausiai, „Tensorflow“ sukurtas taip, kad būtų galima jį panaudoti masiškai. Jis veikia su procesoriumi ir GPU.

„Tensorflow“ sulaukia didžiausio populiarumo „GitHub“, palyginti su kita giluminio mokymosi sistema.

Žinomų algoritmų, palaikomų „TensorFlow“, sąrašas

Žemiau pateikiamas palaikomų „TensorFlow“ algoritmų sąrašas:

Šiuo metu „TensorFlow 1.10“ turi įmontuotą API, skirtą:

  • Linijinė regresija: tf.estimator. LinearRegressor
  • Klasifikacija: tf.estimator.LinearClassifier
  • Gilaus mokymosi klasifikacija: tf.estimator.DNNClassifier
  • Gilus mokymosi nuvalymas ir gilumas: tf.estimator.DNNLinearCombinedClassifier
  • Stiprinančio medžio regresija: tf.estimator.BoostedTreesRegressor
  • Patobulinta medžių klasifikacija: tf.estimator.BoostedTreesClassifier

Paprastas „TensorFlow“ pavyzdys

import numpy as npimport tensorflow as tf

Pirmose dviejose kodo eilutėse mes importavome tensorflow kaip tf. Naudojant „Python“, yra įprasta, kad bibliotekai naudojamas trumpasis pavadinimas. Privalumas yra vengti įvesti visą bibliotekos pavadinimą, kai mums reikia juo naudotis. Pavyzdžiui, mes galime importuoti tensorflow kaip tf ir iškviesti tf, kai norime naudoti tensorflow funkciją

Praktikuokime paprastą „Tensorflow“ darbo eigą naudodami paprastus „TensorFlow“ pavyzdžius. Sukurkime skaičiavimo grafiką, kuris padaugina du skaičius kartu.

Pavyzdyje mes padauginsime X_1 ir X_2 kartu. „Tensorflow“ sukurs mazgą operacijai sujungti. Mūsų pavyzdyje tai vadinama dauginimu. Nustačius grafiką, „Tensorflow“ skaičiavimo varikliai padaugins X_1 ir X_2.

„TensorFlow“ pavyzdys

Galiausiai vykdysime „TensorFlow“ seansą, kuris atliks skaičiavimo grafiką su X_1 ir X_2 reikšmėmis ir atspausdins daugybos rezultatą.

Apibrėžkime įvesties mazgus X_1 ir X_2. Kurdami mazgą „Tensorflow“, turime pasirinkti, kokį mazgą sukurti. X1 ir X2 mazgai bus vietos rezervavimo mazgas. Kiekvieną kartą, kai atliekame skaičiavimą, vietos rezervavimo ženklas priskiria naują vertę. Mes sukursime juos kaip TF taško vietos rezervavimo mazgą.

1 veiksmas: apibrėžkite kintamąjį

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

Kai sukursime vietos rezervavimo mazgą, turėsime perduoti duomenų tipą, kuris čia pridės skaičius, kad galėtume naudoti slankiojo kablelio duomenų tipą, naudokime tf.float32. Šiam mazgui taip pat turime suteikti pavadinimą. Šis pavadinimas pasirodys, kai pažvelgsime į savo modelio grafines vizualizacijas. Pavadinkime šį mazgą X_1, įvesdami parametrą, pavadintą vardu, kurio vertė yra X_1, ir dabar apibrėžkime X_2 taip pat. X_2.

2 žingsnis: Apibrėžkite skaičiavimą

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

Dabar mes galime apibrėžti mazgą, kuris atlieka daugybos operaciją. „Tensorflow“ mes galime tai padaryti sukurdami tf.multliply mazgą.

Mes perduosime X_1 ir X_2 mazgus į daugybos mazgą. Tensorflow liepia susieti tuos mazgus skaičiavimo grafike, todėl mes prašome jo ištraukti reikšmes iš x ir y ir padauginti rezultatą. Taip pat suteiksime daugybos mazgui vardą padauginti. Tai visas mūsų paprasto skaičiavimo grafiko apibrėžimas.

3 žingsnis: Atlikite operaciją

Norėdami atlikti operacijas diagramoje, turime sukurti sesiją. „Tensorflow“ tai atlieka tf.Session (). Dabar, kai mes turime sesiją, mes galime paprašyti sesijos paleisti operacijas mūsų skaičiavimo grafike, paskambinę sesijai. Norėdami atlikti skaičiavimą, turime naudoti „run“.

Kai vykdoma pridėjimo operacija, ji supras, kad jai reikia patraukti X_1 ir X_2 mazgų reikšmes, todėl mes taip pat turime pateikti X_1 ir X_2 reikšmes. Tai galime padaryti pateikdami parametrą, vadinamą feed_dict. X_1 reikšmę perduodame 1,2,3, o X_2 - 4,5,6.

Rezultatus atspausdiname spausdindami (rezultatas). Turėtume pamatyti 4, 10 ir 18 1x4, 2x5 ir 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.]

Duomenų įkėlimo į „TensorFlow“ parinktys

Pirmasis žingsnis prieš mokant mašininio mokymosi algoritmo yra duomenų įkėlimas. Duomenis įkelti galima dviem būdais:

1. Įkelkite duomenis į atmintį: tai paprasčiausias būdas. Visus duomenis į atmintį įkeliate kaip vieną masyvą. Galite parašyti „Python“ kodą. Šios kodo eilutės nėra susijusios su „Tensorflow“.

2. „Tensorflow“ duomenų perdavimo linija. „Tensorflow“ turi įmontuotą API, kuri padeda lengvai įkelti duomenis, atlikti operaciją ir tiekti mašininio mokymosi algoritmą. Šis metodas veikia labai gerai, ypač kai turite didelį duomenų rinkinį. Pavyzdžiui, žinoma, kad vaizdo įrašai yra milžiniški ir netelpa į atmintį. Duomenų perdavimo linija pati tvarko atmintį

Kokį sprendimą naudoti?

Įkelkite duomenis į atmintį

Jei jūsų duomenų rinkinys nėra per didelis, ty mažiau nei 10 gigabaitų, galite naudoti pirmąjį metodą. Duomenys gali tilpti į atmintį. Norėdami importuoti CSV failus, galite naudoti garsiąją biblioteką „Pandas“. Daugiau apie pandas sužinosite kitoje pamokoje.

Įkelkite duomenis naudodami „Tensorflow“ vamzdyną

Antrasis metodas geriausiai tinka, jei turite didelį duomenų rinkinį. Pavyzdžiui, jei turite 50 gigabaitų duomenų rinkinį ir jūsų kompiuteryje yra tik 16 gigabaitų atmintis, mašina sugenda.

Esant tokiai situacijai, reikia tiesti „Tensorflow“ vamzdyną. Dujotiekis duomenis įkels paketais arba mažais gabalais. Kiekviena partija bus išstumta į vamzdyną ir bus paruošta treniruotėms. Dujotiekio statymas yra puikus sprendimas, nes jis leidžia naudoti lygiagrečią skaičiavimą. Tai reiškia, kad „Tensorflow“ mokys modelį keliuose procesoriuose. Tai skatina skaičiavimus ir leidžia mokyti galingą nervų tinklą.

Kitose pamokose pamatysite, kaip pastatyti reikšmingą vamzdyną, kad maitintumėte savo nervų tinklą.

Trumpai tariant, jei turite nedidelį duomenų rinkinį, galite įkelti duomenis į atmintį naudodami „Pandas“ biblioteką.

Jei turite didelį duomenų rinkinį ir norite naudoti kelis procesorius, jums bus patogiau dirbti su „Tensorflow“ vamzdynu.

Sukurkite „Tensorflow“ vamzdyną

Ankstesniame pavyzdyje rankiniu būdu pridedame tris X_1 ir X_2 reikšmes. Dabar pamatysime, kaip įkelti duomenis į „Tensorflow“.

1 žingsnis) Sukurkite duomenis

Pirmiausia naudokime numpy biblioteka dviem atsitiktinėms reikšmėms generuoti.

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

[[0.8835775 0.23766977]]

2 žingsnis) Sukurkite vietos rezervavimo ženklą

Kaip ir ankstesniame pavyzdyje, mes sukuriame vietos rezervavimo ženklą pavadinimu X. Turime aiškiai nurodyti tenzoriaus formą. Tuo atveju mes įkelsime masyvą tik su dviem reikšmėmis. Mes galime parašyti figūrą kaip forma = [1,2]

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

3 žingsnis. Apibrėžkite duomenų rinkinio metodą

po to turime apibrėžti duomenų rinkinį, kuriame galime užpildyti vietos rezervo ženklo x vertę. Turime naudoti metodą tf.data.Dataset.from_tensor_slices

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

4 žingsnis) Sukurkite dujotiekį

Ketvirtame etape turime inicijuoti dujotiekį, kuriame tekės duomenys. Turime sukurti iteratorių su make_initializable_iterator. Pavadiname iteratoriumi. Tada turime paskambinti šiam iteratoriui, kad galėtume pateikti kitą duomenų paketą get_next. Šį žingsnį pavadiname get_next. Atkreipkite dėmesį, kad mūsų pavyzdyje yra tik viena duomenų partija, turinti tik dvi reikšmes.

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

5 žingsnis) Atlikite operaciją

Paskutinis žingsnis yra panašus į ankstesnį pavyzdį. Mes inicijuojame sesiją ir vykdome operacijų iteratorių. Mes tiekiame „feed_dict“ su numpy sukurta verte. Šios dvi reikšmės užpildys vietos rezervavimo ženklą x. Tada paleidžiame get_next, kad išspausdintume rezultatą.

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]

Santrauka

„TensorFlow“ reikšmė: „TensorFlow“ yra garsiausia pastarųjų metų giluminio mokymosi biblioteka. „TensorFlow“ naudodamasis specialistas gali sukurti bet kokią gilaus mokymosi struktūrą, pvz., CNN, RNN ar paprastą dirbtinį neuroninį tinklą.

„TensorFlow“ dažniausiai naudoja mokslininkai, startuoliai ir didelės įmonės. „Google“ naudoja „TensorFlow“ beveik visuose „Google“ kasdieniuose produktuose, įskaitant „Gmail“, „Photo“ ir „Google“ paieškos variklius.

„Google Brain“ komandos sukurta „TensorFlow“ užpildo spragą tarp tyrėjų ir produktų kūrėjų. 2015 m. Jie paviešino „TensorFlow“; jis sparčiai populiarėja. Šiais laikais „TensorFlow“ yra gilaus mokymosi biblioteka, turinti daugiausia „GitHub“ saugyklų.

Praktikai naudoja „Tensorflow“, nes jį lengva pritaikyti masto mastu. Jis sukurtas veikti debesyje arba mobiliuosiuose įrenginiuose, pvz., „IOs“ ir „Android“.

„Tensorflow“ veikia sesijos metu. Kiekvieną seansą apibrėžia grafikas su skirtingais skaičiavimais. Paprastas pavyzdys gali būti padauginimas iš skaičiaus. Programoje „Tensorflow“ reikia atlikti tris veiksmus:

  1. Apibrėžkite kintamąjį
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
  1. Apibrėžkite skaičiavimą
multiply = tf.multiply(X_1, X_2, name = "multiply")
  1. Atlikite operaciją
with tf.Session() as session:result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})print(result)

Viena įprasta „Tensorflow“ praktika yra sukurti vamzdyną duomenims įkelti. Jei atliksite šiuos penkis veiksmus, galėsite įkelti duomenis į „TensorFLow“

  1. Sukurkite duomenis
import numpy as npx_input = np.random.sample((1,2))print(x_input)
  1. Sukurkite vietos rezervavimo ženklą
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
  1. Apibrėžkite duomenų rinkinio metodą
dataset = tf.data.Dataset.from_tensor_slices(x)
  1. Sukurkite dujotiekį
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
  1. Vykdykite programą
with tf.Session() as sess:sess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next)) 

Įdomios straipsniai...