TensorFlow apmācība - padziļināta mācīšanās, izmantojot TensorFlow



TensorFlow apmācība ir trešais emuārs sērijā. Tas ietver visus TensorFlow pamatus. Tajā runāts arī par to, kā izveidot vienkāršu lineāru modeli.

Esmu izstrādājis šo TensorFlow apmācību profesionāļiem un entuziastiem, kuri ir ieinteresēti piemērot Deep Learning algoritmu, izmantojot TensorFlow dažādu problēmu risināšanai. TensorFlow ir atvērtā koda dziļo mācību bibliotēka, kuras pamatā ir datu plūsmas diagrammu koncepcija modeļu veidošanai. Tas ļauj jums izveidot liela mēroga neironu tīklus ar daudziem slāņiem.Mācīšanās izmantot šo bibliotēku ir arī būtiska .Tālāk ir norādītas tēmas, kas tiks apskatītas šajā TensorFlow apmācības emuārā:

  • Kas ir TensorFlow
  • TensorFlow koda pamati
  • TensorFlow UseCase

Kas ir Tensors?

Šajā TensorFlow apmācībā, pirms runājam par TensorFlow, vispirms sapratīsim kas ir tensori . Tensori ir nekas cits kā de facto, lai attēlotu datus dziļās mācībās.





Tensori - TensorFlow apmācība - EdurekaKā parādīts attēlā iepriekš, tenzori ir tikai daudzdimensionāli masīvi, kas ļauj attēlot datus ar augstākiem izmēriem. Kopumā ar programmu Deep Learning jūs nodarbojaties ar lielu dimensiju datu kopām, kur dimensijas attiecas uz dažādām datu kopā esošajām pazīmēm. Faktiski nosaukums “TensorFlow” ir iegūts no operācijām, kuras neironu tīkli veic tenoriem. Tā burtiski ir tensoru plūsma. Tā kā jūs esat sapratuši, kas ir tenori, ļaujiet mums virzīties uz priekšu šajā TensorFlow apmācībā un sapratīsim - kas ir TensorFlow?

Kas ir TensorFlow?

TensorFlow ir bibliotēka, kuras pamatā ir Python un kas nodrošina dažāda veida funkcionalitāti dziļu mācību modeļu ieviešanai. Kā tika apspriests iepriekš, terminu TensorFlow veido divi termini - Tensor & Flow:



Vietnē TensorFlow termins tensors attiecas uz datu attēlojumu kā daudzdimensionālu masīvu, turpretim termins plūsma attiecas uz darbību sērijām, kuras veic ar tenoriem, kā parādīts iepriekš redzamajā attēlā.

Tagad mums ir pietiekami daudz informācijas par TensorFlow.



Tālāk šajā TensorFlow apmācībā mēs apspriedīsim par TensorFlow koda pamatiem.

TensorFlow apmācība: koda pamati

Būtībā TensorFlow programmas rakstīšanas process ietver divus posmus:

  1. Skaitļošanas grafika veidošana
  2. Rādīt skaitļošanas grafiku

Ļaujiet man paskaidrot jums iepriekš minētos divus soļus pa vienam:

1. Skaitļošanas grafika veidošana

Tātad, kas ir skaitļošanas grafiks? Nu, skaitļošanas grafiks ir TensorFlow darbību virkne, kas sakārtota kā mezgli diagrammā. Katrs mezgls ņem 0 vai vairāk tenzorus kā ievadi un rada tenoru kā izvadi. Ļaujiet man sniegt vienkārša skaitļošanas grafika piemēru, kas sastāv no trim mezgliem - uz , b & c kā parādīts zemāk:

Iepriekš minētā skaitļošanas grafika skaidrojums:

  • Pastāvīgi mezglitiek izmantoti, lai saglabātu nemainīgas vērtības, jo tas prasa nulles ievadi, bet saglabā iegūtās vērtības kā izvadi. Iepriekš minētajā piemērā a un b ir nemainīgi mezgli ar attiecīgi 5. un 6. vērtību.

  • Mezgls c apzīmē nemainīgā mezgla a reizināšanas ar b darbību. Tāpēc, izpildot mezglu c, tiks iegūts konstanta mezgla a & b reizinājums.

Būtībā skaitļošanas grafiku var uzskatīt par alternatīvu veidu matemātisko aprēķinu konceptualizēšanai, kas notiek TensorFlow programmā. Darbības, kas piešķirtas dažādiem skaitļošanas grafika mezgliem, var veikt paralēli, tādējādi nodrošinot labāku sniegumu skaitļošanas ziņā.

Šeit mēs vienkārši aprakstām aprēķinu, tas neko neaprēķina, tajā nav vērtību, tas tikai nosaka jūsu kodā norādītās darbības.

2. Rādīt skaitļošanas grafiku

Ņemsim iepriekšējo skaitļošanas grafika piemēru un sapratīsim, kā to izpildīt. Šis ir kods no iepriekšējā piemēra:

1. piemērs:

importēt tensorflow kā tf # Veidot grafiku a = tf.constant (5.0) b = tf.constant (6.0) c = a * b

Tagad, lai iegūtu mezgla c izvadi, mums jāpalaiž skaitļošanas grafiks a robežās sesija . Sesija ievieto diagrammas darbības ierīcēs, piemēram, procesoros vai GPU, un nodrošina metodes to izpildei.

Sesija apkopo TensorFlow izpildlaika vadību un stāvokli, t.i., tā saglabā informāciju par visu darbību izpildes secību un jau aprēķinātās darbības rezultātu nodod nākamajai cauruļvada operācijai. Ļaujiet man jums parādīt, kā sesijā palaist iepriekš minēto skaitļošanas grafiku (katras koda rindas skaidrojums ir pievienots kā komentārs):

# Izveidojiet sesijas objektu sess = tf.Session () # Palaidiet diagrammu sesijas laikā un saglabājiet izvadi mainīgajā output_c = sess.run (c) # Izdrukājiet mezgla c print izvadi (output_c) # Aizveriet sesiju atbrīvot dažus resursus sess.close ()
 Izeja: 30

Tātad tas viss bija par sesiju un skaitļošanas grafika palaišanu tajā. Tagad parunāsim par mainīgajiem un vietturiem, kurus mēs plaši izmantosim, veidojot dziļu mācību modeli, izmantojot TensorFlow.

Konstanti, vietturis un mainīgie

Programmā TensorFlow konstantes, vietturi un mainīgie tiek izmantoti, lai attēlotu dažādus dziļas mācīšanās modeļa parametrus. Tā kā konstantes jau esmu apspriedis iepriekš, sākšu ar vietturiem.

Vietnieks:

TensorFlow konstante ļauj saglabāt vērtību, bet, ja nu vēlaties, lai jūsu mezgli veiktu ievadi? Šādai funkcionalitātei tiek izmantoti vietturi, kas ļauj jūsu diagrammā kā parametrus ņemt ārējās ievades. Būtībā vietturis ir solījums sniegt vērtību vēlāk vai izpildlaika laikā. Ļaujiet man sniegt jums piemēru, lai vienkāršotu lietas:

importēt tensorflow kā tf # Veidot vietturus a = tf. vietturis (tf.float32) b = tf. vietturis (tf.float32) # Pavairošanas darbības piešķiršana w.r.t. a & ampamp b uz mezglu mul mul = a * b # Izveidot sesijas objektu sess = tf.Session () # Mul izpildīšana, nododot vērtības [1, 3] [2, 4] a un b attiecīgi output = sess.run ( mul, {a: [1,3], b: [2, 4]}) drukāt ('reizinot ab:', izvade)
 Izeja: [2. 12.]

Norādāmie punkti vietturi:

  • Vietnieki netiek inicializēti, un tajos nav datu.
  • Jānodrošina ievadi vai plūsmas vietturim, kas tiek ņemti vērā izpildlaika laikā.
  • Izpildot vietturi bez ievades, rodas kļūda.

Ļaujiet mums virzīties uz priekšu un saprast - kādi ir mainīgie?

Mainīgie

Padziļinātās mācībās vietturi tiek izmantoti, lai patvaļīgi ievadītu modeli vai diagrammu. Papildus ievades uzņemšanai jums arī jāmaina diagramma tā, lai tā varētu radīt jaunas izejas w.r.t. tās pašas ieejas. Šim nolūkam jūs izmantosiet mainīgos. Īsumā, mainīgais ļauj grafikam pievienot šādus parametrus vai mezglu, kas ir apmācāmi, t.i., vērtību var mainīt noteiktā laika periodā. Mainīgos lielumus definē, norādot to sākotnējo vērtību un veidu, kā parādīts zemāk:

var = tf. Mainīgs ([0,4], dtype = tf.float32)

Piezīme:

  • Gadījumā, ja datu veids nav skaidri norādīts, TensorFlow no inicializētās vērtības secinās konstantes / mainīgā veidu.
  • TensorFlow ir daudz savu datu veidu, piemēram, tf.float32 , tf.int32 utt. Jūs varat atsaukties uz visiem tiem šeit .

Konstantes tiek inicializētas, kad zvanāt tf.pastāvīgs , un to vērtība nekad nevar mainīties. Gluži pretēji, zvanot, mainīgie netiek inicializēti tf. Mainīgs . Lai inicializētu visus mainīgos TensorFlow programmā, jūs jābūt skaidri izsauciet īpašu operāciju, kā parādīts zemāk:

kā apturēt Java programmu
init = tf.global_variables_initializer () sess.run (init)

Vienmēr atcerieties, ka mainīgais ir jāinicializē, pirms diagramma tiek izmantota pirmo reizi.

Piezīme: TensorFlow mainīgie ir atmiņas buferi, kas satur tenzorus, taču atšķirībā no parastajiem tenzoriem, kas tiek parādīti tikai tad, kad tiek palaists grafiks un pēc tam tiek nekavējoties izdzēsti, mainīgie izdzīvo, veicot vairākas diagrammas izpildes.

Tagad, kad esam apskatījuši pietiekami daudz TensorFlow pamatu, ļaujiet mums iet uz priekšu un saprast, kā īstenot lineārās regresijas modeli, izmantojot TensorFlow.

Lineārās regresijas modelis, izmantojot TensorFlow

Lineārās regresijas modeli izmanto, lai prognozētu mainīgā lieluma (atkarīgais mainīgais) nezināmo vērtību no zināmas citu mainīgo vērtības (neatkarīgais mainīgais), izmantojot lineārās regresijas vienādojumu, kā parādīts zemāk:

Tāpēc, lai izveidotu lineāru modeli, jums ir nepieciešams:

  1. Atkarīgais vai izejas mainīgais (Y)
  2. Slīpuma mainīgais (w)
  3. Y - pārtveršana vai aizspriedumi (b)
  4. Neatkarīgais vai ievades mainīgais (X)

Tātad, sāksim veidot lineāru modeli, izmantojot TensorFlow:

Nokopējiet kodu, noklikšķinot uz tālāk norādītās pogas:

# Mainīgā izveide parametra slīpumam (W) ar sākotnējo vērtību kā 0,4 W = tf. Mainīgais ([. 4], tf.float32) # Mainīgā izveide parametra aizspriedumiem (b) ar sākotnējo vērtību kā -0,4 b = tf. Mainīgs ( [-0.4], tf.float32) # Vietneju izveide ievades vai neatkarīga mainīgā nodrošināšanai, apzīmēta ar xx = tf.placeholder (tf.float32) # Lineārās regresijas vienādojums linear_model = W * x + b # Visu mainīgo inicializēšana sess = tf.Session () init = tf.global_variables_initializer () sess.run (init) # Darbojas regresijas modelis, lai aprēķinātu izvades wrt uz norādītajām x vērtībām drukāt (sess.run (linear_model {x: [1, 2, 3, 4]}))

Izeja:

[0. 0.40000001 0.80000007 1.20000005]

Iepriekš minētais kods tikai atspoguļo regresijas modeļa ieviešanas pamatideju, t.i., kā jūs sekojat regresijas līnijas vienādojumam, lai iegūtu izeju w.r.t. ievades vērtību kopa. Bet, lai padarītu to par pilnīgu regresijas modeli, šim modelim ir jāpievieno vēl divas lietas:

  • Pirmkārt, mums jānodrošina mehānisms, ar kura palīdzību mūsu modelis var automātiski apmācīt sevi, pamatojoties uz norādīto izejvielu kopu un attiecīgajiem rezultātiem.
  • Otra lieta, kas mums nepieciešama, ir apstiprināt mūsu apmācīto modeli, salīdzinot tā iznākumu ar vēlamo vai mērķa rezultātu, pamatojoties uz norādīto x vērtību kopu.

Tagad ļaujiet mums saprast, kā es varu iekļaut iepriekš norādītās funkcijas savā regresijas modeļa kodā.

Zaudējuma funkcija - modeļa validācija

Zaudējumu funkcija mēra, cik tālu viena no otras ir modeļa pašreizējā jauda no vēlamās vai mērķa izejas. Savam lineārās regresijas modelim, ko sauc par kvadrāta kļūdu summu vai SSE, es izmantošu visbiežāk izmantoto zaudējumu funkciju. SSE aprēķināta vidējā modeļa izeja (attēlo line_model) un vēlamā vai mērķa izeja (y) kā:

y = tf.placeholder (tf.float32) kļūda = lineārs_modelis - y squared_errors = tf.square (error) loss = tf.reduce_sum (squared_errors) print (sess.run (loss, {x: [1,2,3,4 ], y: [2, 4, 6, 8]})
 Izeja: 90.24

Kā redzat, mēs iegūstam lielu zaudējumu vērtību. Tāpēc mums jāpielāgo svars (W) un aizspriedumi (b), lai samazinātu saņemto kļūdu.

tf.train API - modeļa apmācība

TensorFlow nodrošina optimizētāji kas lēnām maina katru mainīgo, lai samazinātu zaudējumu funkciju vai kļūdu. Vienkāršākais optimizētājs ir gradienta nolaišanās . Tas modificē katru mainīgo atkarībā no zaudējumu atvasinājuma lieluma attiecībā pret šo mainīgo.

# Gradienta nolaišanās optimizētāja optimizētāja izveide = tf.train.GradientDescentOptimizer (0,01) vilciens = optimizētājs.minimizēt (zaudējumus) i diapazonā (1000): sess.run (vilciens, {x: [1, 2, 3, 4], y: [2, 4, 6, 8]}) izdruka (sess.run ([W, b]))
 Izeja: [masīvs ([1.99999964], dtype = float32), masīvs ([9.86305167e-07], dtype = float32)]

Tātad, izmantojot TensorFlow, jūs izveidojat lineāru modeli un apmācāt to, lai iegūtu vēlamo rezultātu.

Tagad, kad jūs zināt par dziļu mācīšanos, pārbaudiet Autors: Edureka, uzticams tiešsaistes mācību uzņēmums ar vairāk nekā 250 000 apmierinātu izglītojamo tīklu visā pasaulē. Edureka Deep Learning with TensorFlow sertifikācijas apmācības kurss palīdz izglītojamajiem kļūt par ekspertiem apmācībā un optimizēt pamata un konvolucionālos neironu tīklus, izmantojot reāllaika projektus un uzdevumus, kā arī tādas koncepcijas kā SoftMax funkcija, Auto-encoder Neural Networks, Restricted Boltzmann Machine (RBM).

Vai mums ir jautājums? Lūdzu, pieminējiet to komentāru sadaļā, un mēs ar jums sazināsimies.