TensorFlow Tutorial - Malalim na Pag-aaral Gamit ang TensorFlow



Ang tutorial ng TensorFlow ay ang pangatlong blog sa serye. Kabilang dito ang lahat ng mga pangunahing kaalaman ng TensorFlow. Pinag-uusapan din ito tungkol sa kung paano lumikha ng isang simpleng linear model.

Dinisenyo ko ang tutorial na ito ng TensorFlow para sa mga propesyonal at taong mahilig na interesadong mag-apply ng Deep Learning Algorithm gamit ang TensorFlow upang malutas ang iba't ibang mga problema. Ang TensorFlow ay isang bukas na mapagkukunan ng malalim na library ng pag-aaral na batay sa konsepto ng mga graph ng daloy ng data para sa mga modelo ng pagbuo. Pinapayagan kang lumikha ng malakihang mga neural network na may maraming mga layer.Ang pag-aaral ng paggamit ng silid-aklatan na ito ay isang pangunahing bahagi din ng .Ang mga sumusunod ay ang mga paksang tatalakayin sa TensorFlow tutorial blog na ito:

sertipikadong developer ng cloudera para sa apache hadoop
  • Ano ang TensorFlow
  • Mga Pangunahing Kaalaman sa TensorFlow Code
  • TensorFlow UseCase

Ano ang Tensor?

Sa tutorial na TensorFlow na ito, bago pag-usapan ang tungkol sa TensorFlow, ipaalam muna sa amin ano ang tenors . Ang mga sensor ay walang anuman kundi isang de facto para sa kumakatawan sa data sa malalim na pag-aaral.





Tensor - TensorFlow Tutorial - EdurekaTulad ng ipinakita sa imahe sa itaas, ang mga tensyon ay mga multidimensional na array lamang, na nagbibigay-daan sa iyo upang kumatawan sa data na mayroong mas mataas na mga sukat. Sa pangkalahatan, sa Deep Learning haharapin mo ang mga mataas na dimensional na hanay ng data kung saan ang mga sukat ay tumutukoy sa iba't ibang mga tampok na naroroon sa hanay ng data. Sa katunayan, ang pangalang 'TensorFlow' ay nakuha mula sa mga pagpapatakbo na gumanap ng mga neural network sa mga tensyon. Ito ay literal na isang daloy ng mga tensyon. Dahil, naintindihan mo kung ano ang mga tenor, magpatuloy tayo sa tutorial na ito ng TensorFlow at maunawaan - ano ang TensorFlow?

Ano ang TensorFlow?

Ang TensorFlow ay isang silid-aklatan batay sa Python na nagbibigay ng iba't ibang mga uri ng pag-andar para sa pagpapatupad ng Mga Deep Model ng Model. Tulad ng tinalakay nang mas maaga, ang term na TensorFlow ay binubuo ng dalawang term - Tensor & Flow:



Sa TensorFlow, ang term na tensor ay tumutukoy sa representasyon ng data bilang multi-dimensional array samantalang ang term flow ay tumutukoy sa serye ng mga pagpapatakbo na isinasagawa ng isa sa mga tenor tulad ng ipinakita sa imahe sa itaas.

Ngayon ay nasaklaw na namin ang sapat na background tungkol sa TensorFlow.



Susunod, sa tutorial na ito ng TensorFlow tatalakayin namin ang tungkol sa mga pangunahing kaalaman sa code ng TensorFlow.

TensorFlow Tutorial: Mga Pangunahing Kaalaman sa Code

Talaga, ang pangkalahatang proseso ng pagsulat ng isang programa ng TensorFlow ay nagsasangkot ng dalawang hakbang:

  1. Pagbuo ng isang Computational Graph
  2. Pagpapatakbo ng isang Computational Graph

Hayaan mong ipaliwanag ko sa iyo ang isa sa itaas na mga hakbang nang paisa-isa:

1. Pagbuo ng isang Computational Graph

Kaya, ano ang isang computational graph? Sa gayon, ang isang computational graph ay isang serye ng mga pagpapatakbo ng TensorFlow na nakaayos bilang mga node sa grap. Ang bawat node ay tumatagal ng 0 o higit pang mga tensyon bilang input at gumagawa ng isang tenor bilang output. Hayaan akong bigyan ka ng isang halimbawa ng isang simpleng computational graph na binubuo ng tatlong mga node - sa , b & c tulad ng ipinakita sa ibaba:

Paliwanag ng Above Computational Graph:

  • Patuloy na mga nodeay ginagamit upang mag-imbak ng pare-pareho ang mga halaga dahil nangangailangan ito ng zero input, ngunit gumagawa ng mga nakaimbak na halaga bilang output. Sa halimbawa sa itaas, ang a at b ay pare-pareho ang mga node na may halagang 5 at 6 ayon sa pagkakabanggit.

  • Ang node c ay kumakatawan sa pagpapatakbo ng pag-multiply ng pare-pareho na node a na may b. Samakatuwid, ang pagpapatupad ng node c ay magreresulta sa pagpaparami ng const node a & b.

Karaniwan, maaaring maiisip ng isang computational graph bilang isang kahaliling paraan ng pag-konsepto ng mga kalkulasyon ng matematika na nagaganap sa isang programa ng TensorFlow. Ang mga pagpapatakbo na nakatalaga sa iba't ibang mga node ng isang Computational Graph ay maaaring isagawa nang kahanay, sa gayon, na nagbibigay ng isang mas mahusay na pagganap sa mga tuntunin ng pagkalkula.

Inilalarawan lamang namin dito ang pagkalkula, hindi ito nakakalkula ng anumang bagay, hindi ito nagtataglay ng anumang mga halaga, tinutukoy lamang nito ang mga pagpapatakbo na tinukoy sa iyong code.

2. Pagpapatakbo ng isang Computational Graph

Gawin natin ang dating halimbawa ng computational graph at maunawaan kung paano ito isagawa. Ang sumusunod ay ang code mula sa nakaraang halimbawa:

Halimbawa 1:

i-import ang tensorflow bilang tf # Bumuo ng isang graph a = tf.constant (5.0) b = tf.constant (6.0) c = a * b

Ngayon, upang makuha ang output ng node c, kailangan nating patakbuhin ang computational graph sa loob ng a sesyon . Inilalagay ng session ang mga pagpapatakbo ng grap sa Mga Device, tulad ng mga CPU o GPU, at nagbibigay ng mga pamamaraan upang maipatupad ang mga ito.

Ipinapaloob ng isang sesyon ang kontrol at estado ng runtime ng TensorFlow ibig sabihin, iniimbak nito ang impormasyon tungkol sa pagkakasunud-sunod kung saan isasagawa ang lahat ng mga operasyon at ipasa ang resulta ng na-compute na operasyon sa susunod na operasyon sa pipeline. Hayaan mong ipakita ko sa iyo kung paano patakbuhin ang nasa itaas na computational graph sa loob ng isang session (Ang paliwanag ng bawat linya ng code ay naidagdag bilang isang komento):

# Lumikha ng session session sess = tf.Session () #Run ang graph sa loob ng isang session at iimbak ang output sa isang variable output_c = sess.run (c) #Print ang output ng node c print (output_c) #Close the session to magbakante ng ilang mga mapagkukunan sess.close ()
 Output: 30

Kaya, ito ay tungkol sa sesyon at pagpapatakbo ng isang computational graph sa loob nito. Ngayon, pag-usapan natin ang tungkol sa mga variable at placeholder na gagamitin namin nang malawakan habang nagtatayo ng malalim na modelo ng pag-aaral gamit ang TensorFlow.

Patuloy, Placeholder at Variable

Sa TensorFlow, ang mga Constant, placeholder at variable ay ginagamit upang kumatawan sa iba't ibang mga parameter ng isang malalim na modelo ng pag-aaral. Dahil, napag-usapan ko na ang mga Constant nang mas maaga, magsisimula ako sa mga placeholder.

Placeholder:

Pinapayagan ka ng isang pare-pareho ng TensorFlow na mag-imbak ng isang halaga ngunit, paano kung, nais mong kumuha ng mga input ang iyong mga node sa pagtakbo? Para sa ganitong uri ng pag-andar, ginagamit ang mga placeholder na nagbibigay-daan sa iyong grap na kumuha ng mga panlabas na input bilang mga parameter. Talaga, ang isang placeholder ay isang pangako na magbibigay ng isang halaga sa paglaon o sa panahon ng runtime. Hayaan akong magbigay sa iyo ng isang halimbawa upang gawing mas simple ang mga bagay:

i-import ang tensorflow bilang tf # Lumilikha ng mga placeholder a = tf. placeholder (tf.float32) b = tf. placeholder (tf.float32) # Pagtatalaga ng pagpapatakbo ng pagpaparami w.r.t. a & ampamp b to node mul mul = a * b # Lumikha ng session object sess = tf.Session () # Pagpapatupad ng mul sa pamamagitan ng pagpasa ng mga halagang [1, 3] [2, 4] para sa a at b ayon sa pagkakabanggit = sess.run ( mul, {a: [1,3], b: [2, 4]}) print ('Pagpaparami ng ab:', output)
 Output: [2. 12.]

Mga Puntong Dapat Tandaan mga placeholder:

  • Ang mga placeholder ay hindi pinasimulan at walang naglalaman ng data.
  • Dapat magbigay ang isa ng mga input o feed sa placeholder na isinasaalang-alang sa panahon ng runtime.
  • Ang pagpapatupad ng isang placeholder nang walang pag-input ay bumubuo ng isang error.

Ngayon, magpatulong tayo at unawain - ano ang mga variable?

Mga variable

Sa malalim na pag-aaral, ginagamit ang mga placeholder upang kumuha ng di-makatwirang mga pag-input sa iyong modelo o grap. Bukod sa pagkuha ng pag-input, kailangan mo ring baguhin ang grap na maaaring makagawa ng mga bagong output w.r.t. parehong input. Para sa mga ito ay gumagamit ka ng mga variable. Sa madaling sabi, pinapayagan ka ng isang variable na magdagdag ng mga naturang parameter o node sa grap na maaaring sanayin ibig sabihin ang halaga ay maaaring mabago sa loob ng isang panahon. Ang mga variable ay tinukoy sa pamamagitan ng pagbibigay ng kanilang paunang halaga at uri tulad ng ipinakita sa ibaba:

var = tf.Variable ([0.4], dtype = tf.float32)

Tandaan:

  • Kung sakaling hindi mo ibinigay nang malinaw ang uri ng data, mahihinuha ng TensorFlow ang uri ng pare-pareho / variable mula sa naunang halaga.
  • Ang TensorFlow ay may marami sa sarili nitong mga uri ng data tulad ng tf.float32 , tf.int32 atbp. Maaari kang mag-refer sa kanilang lahat ng higit dito .

Ang mga pare-pareho ay pinasimulan kapag tumawag ka tf.constant , at ang kanilang halaga ay hindi maaaring magbago. Sa kabaligtaran, ang mga variable ay hindi napasimulan kapag tumawag ka tf.Variable . Upang simulan ang lahat ng mga variable sa isang programa ng TensorFlow, ikaw dapat tahasang tumawag sa isang espesyal na operasyon tulad ng ipinakita sa ibaba:

init = tf.global_variables_initializer () sess.run (init)

Laging tandaan na ang isang variable ay dapat na mapasimulan bago gamitin ang isang graph sa unang pagkakataon.

Tandaan: Ang mga variable ng TensorFlow ay mga buffer na nasa memorya na naglalaman ng mga tensyon, ngunit hindi katulad ng normal na mga tensyon na natibay lamang kapag pinatakbo ang isang graph at agad na tinanggal pagkatapos, ang mga variable ay makakaligtas sa maraming pagpapatupad ng isang graph.

Ngayon na natakpan natin ang sapat na mga pangunahing kaalaman ng TensorFlow, magpatuloy tayo at maunawaan kung paano ipatupad ang isang linear na modelo ng pagbabalik gamit ang TensorFlow.

Modelong Linear Regression Gamit ang TensorFlow

Ang Modelong Linear Regression ay ginagamit para sa paghula ng hindi kilalang halaga ng isang variable (Dependent Variable) mula sa kilalang halaga ng isa pang variable (Independent Variable) na gumagamit ng linear equation ng pagbabalik tulad ng ipinakita sa ibaba:

Samakatuwid, para sa paglikha ng isang linear na modelo, kailangan mo:

  1. Nakasalalay o Output na Variable (Y)
  2. Variable ng Slope (w)
  3. Y - Intercept o bias (b)
  4. Independent o Input na Variable (X)

Kaya, simulan natin ang pagbuo ng linear na modelo gamit ang TensorFlow:

Kopyahin ang code sa pamamagitan ng pag-click sa pindutan na ibinigay sa ibaba:

# Lumilikha ng variable para sa slope ng parameter (W) na may paunang halaga bilang 0.4 W = tf.Variable ([. 4], tf.float32) #Creating variable para sa bias ng parameter (b) na may paunang halaga bilang -0.4 b = tf.Variable ( [-0.4], tf.float32) # Lumilikha ng mga placeholder para sa pagbibigay ng input o independiyenteng variable, na tinukoy ng xx = tf.placeholder (tf.float32) # Equation of Linear Regression linear_model = W * x + b # Inisialisa ang lahat ng mga variable sess = tf.Session () init = tf.global_variables_initializer () sess.run (init) # Pagpapatakbo ng modelo ng pagbabalik upang makalkula ang output wrt upang ibigay ang mga halagang x print (sess.run (linear_model {x: [1, 2, 3, 4]}))

Output:

[0. 0.40000001 0.80000007 1.20000005]

Ang nakasaad na code sa itaas ay kumakatawan lamang sa pangunahing ideya sa likod ng pagpapatupad ng modelo ng pagbabalik ibig sabihin kung paano mo susundin ang equation ng linya ng pag-urong upang makakuha ng output w.r.t. isang hanay ng mga halaga ng pag-input. Ngunit, may dalawang iba pang mga bagay na natitira upang maidagdag sa modelong ito upang gawin itong isang kumpletong modelo ng pagbabalik:

  • Una, kailangan naming magbigay ng isang mekanismo kung saan ang aming modelo ay maaaring sanayin ang sarili nito awtomatiko batay sa ibinigay na hanay ng mga input at kani-kanilang output.
  • Pangalawang bagay na kailangan namin ay patunayan ang aming bihasang modelo sa pamamagitan ng paghahambing ng output nito sa nais o target na output batay sa ibinigay na hanay ng mga halagang x.

Ipaalam sa amin ngayon na maunawaan kung paano ko maisasama ang nabanggit na mga pag-andar sa itaas sa aking code para sa modelo ng pagbabalik.

Pag-andar ng Pagkawala - Pagpapatunay ng Modelo

Sinusukat ng isang pag-andar ng pagkawala kung gaano kalayo ang kasalukuyang output ng modelo mula sa nais o target na output. Gumagamit ako ng isang pinaka-karaniwang ginagamit na pagkawala ng pag-andar para sa aking linear na modelo ng pagbabalik na tinatawag bilang Kabuuan ng Squared Error o SSE. Kinakalkula ng SSE ang w.r.t. output ng modelo (kinatawan ng linear_model) at ninanais o target na output (y) bilang:

y = tf.placeholder (tf.float32) error = linear_model - y squared_errors = tf.square (error) pagkawala = tf.reduce_sum (squared_errors) print (sess.run (loss, {x: [1,2,3,4 ], y: [2, 4, 6, 8]})
 Output: 90.24

Tulad ng nakikita mo, nakakakuha kami ng isang mataas na halaga ng pagkawala. Samakatuwid, kailangan nating ayusin ang aming mga timbang (W) at bias (b) upang mabawasan ang error na natatanggap.

tf.train API - Pagsasanay sa Modelo

Nagbibigay ang TensorFlow mga optimizer na mabagal baguhin ang bawat variable upang ma-minimize ang pagkawala ng pag-andar o error. Ang pinakasimpleng optimizer ay galing sa gradient . Binabago nito ang bawat variable ayon sa laki ng hinalang pagkawala ng patungkol sa variable na iyon.

#Naglikha ng isang halimbawa ng gradient descent optimizer optimizer = tf.train.GradientDescentOptimizer (0.01) tren = optimizer.minimize (loss) para sa i sa saklaw (1000): sess.run (tren, {x: [1, 2, 3, 4], y: [2, 4, 6, 8]}) print (sess.run ([W, b]))
 Output: [array ([1.99999964], dtype = float32), array ([9.86305167e-07], dtype = float32)]

Kaya, ito ay kung paano ka lumilikha ng isang linear na modelo gamit ang TensorFlow at sanayin ito upang makuha ang nais na output.

Ngayon na alam mo ang tungkol sa Deep Learning, tingnan ang ni Edureka, isang pinagkakatiwalaang kumpanya sa pag-aaral sa online na may isang network na higit sa 250,000 nasiyahan na mga nag-aaral na kumalat sa buong mundo. Ang kurso sa Edureka Deep Learning na may TensorFlow Certification Training na kurso ay tumutulong sa mga nag-aaral na maging dalubhasa sa pagsasanay at pag-optimize ng mga basic at convolutional neural network na gumagamit ng mga real time na proyekto at takdang-aralin kasama ang mga konsepto tulad ng pag-andar ng SoftMax, Auto-encoder Neural Networks, Restrected Boltzmann Machine (RBM).

May tanong ba sa amin? Mangyaring banggitin ito sa seksyon ng mga komento at babalikan ka namin.