Sāksim šo apmācību ar TensorFlow ievadu:
Kas ir TensorFlow?
TensorFlow ir atvērtā koda platforma, lai izveidotu Machine Learning lietojumprogrammas. Tā ir simboliska matemātikas bibliotēka, kas izmanto datu plūsmu un diferencējamu programmēšanu, lai veiktu dažādus uzdevumus, kas vērsti uz dziļo neironu tīklu apmācību un secināšanu. Tas ļauj izstrādātājiem izveidot mašīnmācīšanās lietojumprogrammas, izmantojot dažādus rīkus, bibliotēkas un kopienas resursus.
Pašlaik pasaulē visslavenākā dziļo mācību bibliotēka ir Google TensorFlow. Google produkts visos produktos izmanto mašīnmācīšanos, lai uzlabotu meklētājprogrammu, tulkošanu, attēlu parakstīšanu vai ieteikumus.
Konkrēts piemērs ir tas, ka Google lietotāji var ātrāk un precīzāk meklēt ar AI. Ja lietotājs meklēšanas joslā ieraksta atslēgvārdu, Google sniedz ieteikumu par to, kas varētu būt nākamais vārds.
Google vēlas izmantot mašīnmācīšanos, lai izmantotu viņu masveida datu kopas, lai lietotājiem sniegtu vislabāko pieredzi. Mašīnmācīšanos izmanto trīs dažādas grupas:
- Pētnieki
- Datu zinātnieki
- Programmētāji.
Viņi visi var izmantot vienu un to pašu rīku kopu, lai savstarpēji sadarbotos un uzlabotu to efektivitāti.
Google rīcībā nav tikai datu; viņiem ir pasaulē masīvākais dators, tāpēc Tensor Flow tika veidots tā, lai tas būtu mērogā. TensorFlow ir bibliotēka, kuru izstrādājusi Google Brain Team, lai paātrinātu mašīnmācīšanos un dziļu neironu tīklu izpēti.
Tas tika izveidots, lai darbotos ar vairākiem CPU vai GPU un pat mobilajām operētājsistēmām, un tam ir vairāki iesaiņotāji vairākās valodās, piemēram, Python, C ++ vai Java.
Šajā TensorFlow apmācībā jūs uzzināsiet
- Kas ir TensorFlow?
- TensorFlow vēsture
- Kā darbojas TensorFlow
- TensorFlow arhitektūra
- Kur var palaist Tensorflow?
- Ievads TensorFlow komponentos
- Kāpēc TensorFlow ir populārs?
- TensorFlow atbalstīto ievērojamo algoritmu saraksts
- Vienkāršs TensorFlow piemērs
- Iespējas datu ielādēšanai TensorFlow
- Izveidojiet Tensorflow cauruļvadu
TensorFlow vēsture
Pirms pāris gadiem dziļa mācīšanās sāka pārspēt visus pārējos mašīnmācīšanās algoritmus, sniedzot milzīgu datu apjomu. Google redzēja, ka tā varētu izmantot šos dziļos neironu tīklus, lai uzlabotu savus pakalpojumus:
- Gmail
- Foto
- Google meklētājprogramma
Viņi izveido sistēmu Tensorflow, lai ļautu pētniekiem un izstrādātājiem strādāt kopā ar AI modeli. Kad tas ir izstrādāts un mērogots, tas ļauj daudziem cilvēkiem to izmantot.
Pirmo reizi tas tika publiskots 2015. gada beigās, savukārt pirmā stabilā versija parādījās 2017. gadā. Tas ir atvērts avots ar Apache Open Source licenci. Varat to izmantot, modificēt un izplatīt modificēto versiju par maksu, neko nemaksājot Google.
Tālāk šajā TensorFlow Deep mācību apmācībā mēs uzzināsim par TensorFlow arhitektūru un to, kā darbojas TensorFlow.
Kā darbojas TensorFlow
TensorFlow ļauj jums izveidot datu plūsmas grafikus un struktūras, lai noteiktu, kā dati pārvietojas pa diagrammu, ņemot ievadus kā daudzdimensionālu masīvu, ko sauc par Tensor. Tas ļauj jums izveidot darbību shēmu, ko var veikt ar šīm ieejām, kas iet vienā galā un nāk otrā galā kā izeja.
TensorFlow arhitektūra
Tensorflow arhitektūra darbojas trīs daļās:
- Datu pirmapstrāde
- Izveidojiet modeli
- Apmāciet un novērtējiet modeli
To sauc par Tensorflow, jo tas ievada kā daudzdimensiju masīvu, ko sauc arī par tenzoriem . Varat izveidot sava veida darbību shēmu (sauktu par diagrammu), kuru vēlaties veikt šajā ievadā. Ieeja iet vienā galā, un pēc tam tā plūst cauri šai vairāku darbību sistēmai, bet otrā galā iznāk kā izeja.
Tāpēc to sauc par TensorFlow, jo tenors, kas tajā iet, plūst cauri darbību sarakstam, un pēc tam iznāk no otras puses.
Kur var palaist Tensorflow?
TensorFlow aparatūras un programmatūras prasības var klasificēt
Izstrādes fāze: Tas ir, kad jūs apmācāt režīmu. Apmācība parasti notiek uz darbvirsmas vai klēpjdatora.
Palaist fāzi vai secinājuma fāzi: Kad apmācība ir pabeigta, Tensorflow var palaist daudzās dažādās platformās. Jūs varat to palaist tālāk
- Darbvirsma, kurā darbojas sistēma Windows, macOS vai Linux
- Mākonis kā tīmekļa pakalpojums
- Mobilās ierīces, piemēram, iOS un Android
Jūs varat apmācīt to vairākās mašīnās, pēc tam varat darbināt ar citu mašīnu, tiklīdz esat apmācījis modeli.
Modeli var apmācīt un izmantot GPU, kā arī procesoros. GPU sākotnēji tika paredzēti videospēlēm. 2010. gada beigās Stenfordas pētnieki atklāja, ka GPU ir ļoti labs arī matricu operācijās un algebrā, tāpēc tas padara tos ļoti ātrus šāda veida aprēķinu veikšanai. Dziļa mācīšanās balstās uz daudzu matricu reizināšanu. TensorFlow ļoti ātri aprēķina matricas reizinājumu, jo tas ir rakstīts C ++. Lai gan tas tiek ieviests C ++, TensorFlow var piekļūt un kontrolēt citas valodas, galvenokārt Python.
Visbeidzot, būtiska TensorFlow iezīme ir TensorBoard. TensorBoard ļauj grafiski un vizuāli pārraudzīt TensorFlow darbību.
Ievads TensorFlow komponentos
Tensors
Tensorflow nosaukums ir tieši atvasināts no tā pamata ietvara: Tensor . Programmā Tensorflow visos aprēķinos ir iesaistīti tenori. Tensors ir n-izmēru vektors vai matrica , kas attēlo visu veidu datus. Visām tenzora vērtībām ir identisks datu tips ar zināmu (vai daļēji zināmu) formu . Datu forma ir matricas vai masīva izmērs.
Tensoru var iegūt no ievades datiem vai aprēķina rezultāta. Programmā TensorFlow visas darbības tiek veiktas grafika iekšpusē . Grafiks ir aprēķinu kopums, kas notiek secīgi. Katru darbību sauc par op mezglu un tās ir savstarpēji savienotas.
Grafikā ir izklāstītas ops un savienojumi starp mezgliem. Tomēr vērtības netiek parādītas. Mezglu mala ir tenzors, ti, veids, kā aizpildīt operāciju ar datiem.
Grafiki
TensorFlow izmanto grafiku ietvaru. Grafikā apkopoti un aprakstīti visi apmācības laikā veiktie sēriju aprēķini. Grafikam ir daudz priekšrocību:
- Tas tika darīts, lai darbotos ar vairākiem CPU vai GPU un pat mobilo operētājsistēmu
- Grafika pārnesamība ļauj saglabāt aprēķinus tūlītējai vai vēlākai izmantošanai. Grafiku var saglabāt, lai to izpildītu nākotnē.
- Visi aprēķini diagrammā tiek veikti, savienojot tenzorus kopā
- Tensoram ir mezgls un mala. Mezgls veic matemātisko darbību un rada galapunktu izvadi. Malas malas izskaidro ievades / izvades attiecības starp mezgliem.
Kāpēc TensorFlow ir populārs?
TensorFlow ir labākā bibliotēka, jo tā ir veidota tā, lai tā būtu pieejama visiem. Tensorflow bibliotēkā ir iekļauta atšķirīga API, kas izveidota plaša mēroga dziļas mācīšanās arhitektūrā, piemēram, CNN vai RNN. TensorFlow pamatā ir diagrammas aprēķins; tas ļauj izstrādātājam vizualizēt neironu tīkla uzbūvi ar Tensorboad. Šis rīks ir noderīgs, lai atkļūdotu programmu. Visbeidzot, Tensorflow ir veidots tā, lai to varētu izvietot plašā mērogā. Tas darbojas ar CPU un GPU.
Tensorflow GitHub piesaista vislielāko popularitāti salīdzinājumā ar citu dziļo mācību sistēmu.
TensorFlow atbalstīto ievērojamo algoritmu saraksts
Zemāk ir atbalstīto TensorFlow algoritmu saraksts:
Pašlaik TensorFlow 1.10 ir iebūvēts API:
- Lineārā regresija: tf.estimator.LinearRegressor
- Klasifikācija: tf.estimator.LinearClassifier
- Dziļu mācību klasifikācija: tf.estimator.DNNClassifier
- Dziļa mācību noslaucīšana un dziļa: tf.estimator.DNNLinearCombinedClassifier
- Palielinātā koka regresija: tf.estimator.BoostedTreesRegressor
- Paaugstināta koku klasifikācija: tf.estimator.BoostedTreesClassifier
Vienkāršs TensorFlow piemērs
import numpy as npimport tensorflow as tf
Pirmajās divās koda rindiņās esam importējuši tensorflow kā tf. Izmantojot Python, tā ir ierasta prakse, ka bibliotēkā tiek izmantots īss nosaukums. Priekšrocība ir izvairīties ierakstīt bibliotēkas pilnu nosaukumu, kad mums tas ir jāizmanto. Piemēram, mēs varam importēt tensorflow kā tf un izsaukt tf, ja vēlamies izmantot tensorflow funkciju
Praktizēsim Tensorflow elementāro darbplūsmu ar vienkāršiem TensorFlow piemēriem. Izveidosim skaitļošanas grafiku, kas reizina divus skaitļus kopā.
Piemērā mēs reizināsim X_1 un X_2 kopā. Tensorflow izveidos mezglu operācijas savienošanai. Mūsu piemērā to sauc par pavairošanu. Kad grafiks ir noteikts, Tensorflow skaitļošanas dzinēji reizinās X_1 un X_2.
TensorFlow piemērs
Visbeidzot, mēs izpildīsim TensorFlow sesiju, kas palaidīs skaitļošanas grafiku ar X_1 un X_2 vērtībām un izdrukās reizināšanas rezultātu.
Definēsim ievades mezglus X_1 un X_2. Veidojot mezglu Tensorflow, mums jāizvēlas, kādu mezglu izveidot. X1 un X2 mezgli būs viettura mezgls. Katru reizi, kad veicam aprēķinu, vietturis piešķir jaunu vērtību. Mēs tos izveidosim kā TF punkta viettura mezglu.
1. darbība: definējiet mainīgo
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
Kad mēs izveidojam viettura mezglu, mums jānodod datu tips, šeit tiks pievienoti skaitļi, lai mēs varētu izmantot peldošā komata datu tipu, izmantosim tf.float32. Šim mezglam mums arī jāpiešķir nosaukums. Šis nosaukums parādīsies, kad mēs aplūkosim sava modeļa grafiskās vizualizācijas. Nosauksim šo mezglu par X_1, ievadot parametru ar nosaukumu X_1 ar vērtību X_1, un tagad definēsim X_2 tāpat. X_2.
2. solis: definējiet aprēķinu
multiply = tf.multiply(X_1, X_2, name = "multiply")
Tagad mēs varam definēt mezglu, kas veic reizināšanas darbību. Tensorflow mēs to varam izdarīt, izveidojot mezglu tf.multiply.
Mēs nodosim mezglos X_1 un X_2 reizināšanas mezglu. Tas liek tensorflow saistīt šos mezglus skaitļošanas diagrammā, tāpēc mēs lūdzam to izvilkt vērtības no x un y un reizināt rezultātu. Dosim reizināšanas mezglam arī vārdu reizināt. Tā ir visa mūsu vienkāršā skaitļošanas grafika definīcija.
3. solis: izpildiet darbību
Lai diagrammā veiktu operācijas, mums ir jāizveido sesija. Tensorflow to veic tf.Session (). Tagad, kad mums ir sesija, mēs varam lūgt sesiju veikt operācijas mūsu skaitļošanas diagrammā, izsaucot sesiju. Lai veiktu aprēķinu, mums jāizmanto palaist.
Kad darbojas pievienošanas darbība, tā redzēs, ka tai ir jāapgūst mezglu X_1 un X_2 vērtības, tāpēc mums jāievada arī vērtību X_1 un X_2 vērtības. Mēs to varam izdarīt, piegādājot parametru ar nosaukumu feed_dict. Mēs nododam vērtību 1,2,3 X_1 un 4,5,6 vērtību X_2.
Rezultātus izdrukājam ar izdruku (rezultāts). Mums vajadzētu redzēt 4, 10 un 18 attiecībā uz 1x4, 2x5 un 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.]
Iespējas datu ielādēšanai TensorFlow
Pirmais solis pirms mašīnmācīšanās algoritma apmācības ir datu ielāde. Datus var ielādēt divos veidos:
1. Ielādējiet datus atmiņā: tā ir vienkāršākā metode. Visi dati tiek ielādēti atmiņā kā viens masīvs. Jūs varat uzrakstīt Python kodu. Šīs koda rindas nav saistītas ar Tensorflow.
2. Tensorflow datu cauruļvads. Tensorflow ir iebūvēts API, kas palīdz viegli ielādēt datus, veikt darbību un padot mašīnmācīšanās algoritmu. Šī metode darbojas ļoti labi, it īpaši, ja jums ir liela datu kopa. Piemēram, ir zināms, ka attēlu ieraksti ir milzīgi un neiederas atmiņā. Datu cauruļvads pats pārvalda atmiņu
Kādu risinājumu izmantot?
Ielādējiet datus atmiņā
Ja jūsu datu kopa nav pārāk liela, ti, mazāka par 10 gigabaitiem, varat izmantot pirmo metodi. Dati var ievietoties atmiņā. CSV failu importēšanai varat izmantot slaveno bibliotēku ar nosaukumu Pandas. Jūs uzzināsiet vairāk par pandām nākamajā apmācībā.
Ielādējiet datus ar Tensorflow cauruļvadu
Otrā metode vislabāk darbojas, ja jums ir liela datu kopa. Piemēram, ja jums ir 50 gigabaitu datu kopa un datorā ir tikai 16 gigabaiti atmiņas, mašīna avarēs.
Šajā situācijā jums jāveido Tensorflow cauruļvads. Cauruļvads datus ielādēs paketēs vai mazos gabalos. Katra partija tiks virzīta uz cauruļvadu un būs gatava apmācībai. Cauruļvada būvniecība ir lielisks risinājums, jo tas ļauj izmantot paralēlo skaitļošanu. Tas nozīmē, ka Tensorflow apmācīs modeli vairākos procesoros. Tas veicina aprēķinu un ļauj apmācīt spēcīgu neironu tīklu.
Nākamajās apmācībās jūs redzēsiet, kā izveidot ievērojamu cauruļvadu, lai barotu neironu tīklu.
Īsumā, ja jums ir maza datu kopa, datus varat ielādēt atmiņā ar Pandas bibliotēku.
Ja jums ir liela datu kopa un vēlaties izmantot vairākus procesorus, jums būs ērtāk strādāt ar Tensorflow cauruļvadu.
Izveidojiet Tensorflow cauruļvadu
Iepriekš sniegtajā piemērā mēs X_1 un X_2 manuāli pievienojam trīs vērtības. Tagad mēs redzēsim, kā ielādēt datus Tensorflow.
1. darbība. Izveidojiet datus
Pirmkārt, izmantosim numpy bibliotēku, lai ģenerētu divas nejaušas vērtības.
import numpy as npx_input = np.random.sample((1,2))print(x_input)
[[0.8835775 0.23766977]]
2. solis) Izveidojiet vietturi
Tāpat kā iepriekšējā piemērā, mēs izveidojam vietturi ar nosaukumu X. Mums skaidri jānorāda tenzora forma. Gadījumā, ja mēs ielādēsim masīvu tikai ar divām vērtībām. Mēs varam uzrakstīt formu kā forma = [1,2]
# using a placeholderx = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
3. solis. Definējiet datu kopas metodi
pēc tam mums jānosaka datu kopa, kurā mēs varam aizpildīt viettura x vērtību. Mums jāizmanto metode tf.data.Dataset.from_tensor_slices
dataset = tf.data.Dataset.from_tensor_slices(x)
4. solis) Izveidojiet cauruļvadu
Ceturtajā solī mums ir jāinicializē cauruļvads, kur plūdīs dati. Mums ir jāizveido iterators ar make_initializable_iterator. Mēs to nosaucam par iteratoru. Tad mums jāzvana šim iteratoram, lai padotu nākamo datu kopu get_next. Mēs šo darbību nosaucam get_next. Ņemiet vērā, ka mūsu piemērā ir tikai viena datu kopa ar tikai divām vērtībām.
iterator = dataset.make_initializable_iterator()get_next = iterator.get_next()
5. solis. Veiciet darbību
Pēdējais solis ir līdzīgs iepriekšējam piemēram. Mēs iniciējam sesiju un palaižam operācijas iteratoru. Mēs barojam feed_dict ar vērtību, ko ģenerē numpy. Šīs divas vērtības aizpildīs vietturi x. Tad mēs palaižam get_next, lai izdrukātu rezultātu.
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]
Kopsavilkums
TensorFlow nozīme: TensorFlow ir slavenākā dziļu mācību bibliotēka pēdējos gados. Praktizētājs, izmantojot TensorFlow, var izveidot jebkuru dziļu mācību struktūru, piemēram, CNN, RNN vai vienkāršu mākslīgu neironu tīklu.
TensorFlow galvenokārt izmanto akadēmiķi, jaunizveidoti uzņēmumi un lieli uzņēmumi. Google izmanto TensorFlow gandrīz visos Google ikdienas produktos, tostarp Gmail, Foto un Google meklētājprogrammā.
Google Brain komandas izstrādātā TensorFlow, lai aizpildītu plaisu starp pētniekiem un produktu izstrādātājiem. 2015. gadā viņi publiskoja TensorFlow; tā strauji pieaug popularitāte. Mūsdienās TensorFlow ir dziļo mācību bibliotēka ar visvairāk GitHub krātuvēm.
Praktizētāji izmanto Tensorflow, jo to ir viegli izvietot mērogā. Tas ir izveidots darbam mākonī vai mobilajās ierīcēs, piemēram, iOs un Android.
Tensorflow darbojas sesijā. Katru sesiju nosaka diagramma ar dažādiem aprēķiniem. Vienkāršs piemērs var būt reizināšana ar skaitli. Programmā Tensorflow ir jāveic trīs darbības:
- Definējiet mainīgo
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
- Definējiet aprēķinu
multiply = tf.multiply(X_1, X_2, name = "multiply")
- Izpildiet operāciju
with tf.Session() as session:result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})print(result)
Viena izplatīta Tensorflow prakse ir izveidot cauruļvadu datu ielādēšanai. Veicot šīs piecas darbības, varēsiet ielādēt datus vietnē TensorFLow
- Izveidojiet datus
import numpy as npx_input = np.random.sample((1,2))print(x_input)
- Izveidojiet vietturi
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
- Definējiet datu kopas metodi
dataset = tf.data.Dataset.from_tensor_slices(x)
- Izveidojiet cauruļvadu
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
- Izpildiet programmu
with tf.Session() as sess:sess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next))