„TensorFlow“ mokymo programa - gilus mokymasis naudojant „TensorFlow“



„TensorFlow“ mokymo programa yra trečiasis tinklaraštis serijoje. Tai apima visus „TensorFlow“ pagrindus. Taip pat kalbama apie tai, kaip sukurti paprastą tiesinį modelį.

Sukūriau šią „TensorFlow“ pamoką profesionalams ir entuziastams, kuriems įdomu pritaikyti „Deep Learning“ algoritmą naudojant „TensorFlow“ įvairioms problemoms spręsti. „TensorFlow“ yra atviro kodo giluminio mokymosi biblioteka, kuri remiasi duomenų srautų grafikų koncepcija kuriant modelius. Tai leidžia jums sukurti didelio masto neuroninius tinklus su daugeliu sluoksnių.Išmokti naudotis šia biblioteka taip pat yra pagrindinė .Toliau pateikiamos temos, kurios bus aptariamos šiame „TensorFlow“ mokymo tinklaraštyje:

  • Kas yra „TensorFlow“
  • „TensorFlow“ kodo pagrindai
  • „TensorFlow UseCase“

Kas yra „Tensors“?

Šioje „TensorFlow“ pamokoje, prieš kalbėdami apie „TensorFlow“, pirmiausia supraskime kas yra tensoriai . Tensoriai yra ne kas kita, kaip faktinis duomenų pateikimas giluminiame mokymesi.





„Tensors“ - „TensorFlow“ pamoka - „Edureka“Kaip parodyta aukščiau esančiame paveikslėlyje, tenzoriai yra tik daugiamatės masyvai, leidžiantys pateikti didesnių matmenų duomenis. Apskritai, giliai mokydamiesi jūs susiduriate su didelių matmenų duomenų rinkiniais, kur matmenys nurodo skirtingas duomenų rinkinyje esančias ypatybes. Tiesą sakant, pavadinimas „TensorFlow“ buvo kilęs iš operacijų, kurias nerviniai tinklai atlieka tenzorams. Tai tiesiogine to žodžio prasme srautas. Kadangi jūs supratote, kas yra tensoriai, eikime į priekį šioje „TensorFlow“ pamokoje ir supraskime - kas yra „TensorFlow“?

Kas yra „TensorFlow“?

„TensorFlow“ yra „Python“ pagrindu sukurta biblioteka, suteikianti įvairių tipų funkcionalumą giliųjų mokymosi modelių diegimui. Kaip aptarta anksčiau, terminas „TensorFlow“ susideda iš dviejų terminų - „Tensor & Flow“:



Programoje „TensorFlow“ terminas „tensorius“ reiškia duomenų vaizdavimą kaip daugialypį matricą, o terminas „srautas“ reiškia operacijų serijas, kurias vienas atlieka su tenzoriais, kaip parodyta aukščiau pateiktame paveikslėlyje.

Dabar mes turime pakankamai informacijos apie „TensorFlow“.



Toliau šioje „TensorFlow“ pamokoje aptarsime „TensorFlow“ kodo pagrindus.

„TensorFlow“ pamoka: kodo pagrindai

Iš esmės bendras „TensorFlow“ programos rašymo procesas apima du veiksmus:

  1. Skaičiavimo grafiko kūrimas
  2. Skaičiavimo grafiko paleidimas

Leiskite man paaiškinti jums pirmiau pateiktus du veiksmus po vieną:

1. Kompiuterinio grafiko sudarymas

Taigi, kas yra skaičiavimo grafikas? Na, skaičiavimo grafikas yra „TensorFlow“ operacijų serija, išdėstyta diagramoje kaip mazgai. Kiekvienas mazgas ima 0 ar daugiau tensorių kaip įvestį ir sukuria tensorių kaip išvestį. Pateiksiu paprasto skaičiavimo grafiko, kurį sudaro trys mazgai, pavyzdį - į , b & c kaip parodyta žemiau:

Aukščiau pateikto skaičiavimo grafiko paaiškinimas:

  • Nuolatiniai mazgaiyra naudojami pastoviosioms vertėms išsaugoti, nes įvesties reikšmės nėra nulinės, tačiau išsaugotos vertės sukuriamos kaip išvestis. Ankstesniame pavyzdyje a ir b yra pastovūs mazgai, kurių reikšmės yra atitinkamai 5 ir 6.

  • Mazgas c reiškia pastovaus mazgo a padauginimo iš b operaciją. Todėl vykdant mazgą c, padaugės const mazgo a & b.

Iš esmės galima galvoti apie skaičiavimo grafiką kaip alternatyvų matematinių skaičiavimų konceptualizavimo būdą, vykstantį „TensorFlow“ programoje. Skirtingiems skaičiavimo grafiko mazgams priskirtos operacijos gali būti atliekamos lygiagrečiai, taip užtikrinant geresnį skaičiavimų našumą.

Čia mes tiesiog apibūdiname skaičiavimą, jis nieko neskaičiuoja, neturi jokių reikšmių, jis tiesiog apibrėžia jūsų kode nurodytas operacijas.

fibonacci c ++

2. Skaičiavimo grafiko paleidimas

Paimkime ankstesnį skaičiavimo grafiko pavyzdį ir supraskime, kaip jį vykdyti. Toliau pateikiamas ankstesnio pavyzdžio kodas:

1 pavyzdys:

importuoti tensorflow kaip tf # Sukurkite grafiką a = tf.constant (5.0) b = tf.constant (6.0) c = a * b

Dabar, norėdami gauti mazgo c išvestį, turime paleisti skaičiavimo grafiką a viduje sesija . „Session“ grafiko operacijas įdeda į įrenginius, pvz., Procesorius ar GPU, ir pateikia jų vykdymo metodus.

Sesija apima „TensorFlow“ vykdymo laiko valdymą ir būseną, ty saugo informaciją apie visų operacijų atlikimo tvarką ir perduoda jau apskaičiuotų operacijų rezultatą kitai dujotiekio operacijai. Leiskite man parodyti, kaip paleisti aukščiau pateiktą skaičiavimo grafiką per seansą (kiekvienos kodo eilutės paaiškinimas buvo pridėtas kaip komentaras):

# Sukurkite seanso objektą sess = tf.Session () # Paleiskite diagramą per seansą ir išsaugokite išvestį kintamajame output_c = sess.run (c) # Spausdinkite mazgo c spausdinimo išvestį (output_c) # Uždarykite seansą atlaisvinkite kai kuriuos išteklius sess.close ()
 Išvestis: 30

Taigi, viskas buvo apie seansą ir skaičiavimo grafiko paleidimą jame. Dabar pakalbėkime apie kintamuosius ir vietos rezervavimo ženklus, kuriuos plačiai naudosime kurdami gilaus mokymosi modelį naudodami „TensorFlow“.

Konstantos, vietos rezervavimo ženklas ir kintamieji

Programoje „TensorFlow“ konstantos, vietos rezervavimo ženklai ir kintamieji naudojami norint pateikti skirtingus gilaus mokymosi modelio parametrus. Kadangi aš jau aptariau konstantas anksčiau, pradėsiu nuo vietos rezervavimo ženklų.

Vietos savininkas:

„TensorFlow“ konstanta leidžia jums išsaugoti vertę, bet ką daryti, jei norite, kad jūsų mazgai paleistų duomenis? Tokiai funkcijai naudojami vietos rezervavimo ženklai, kurie leidžia jūsų diagramai kaip parametrus laikyti išorinius įvestis. Iš esmės, vietos rezervavimo ženklas yra pažadas pateikti vertę vėliau arba vykdymo metu. Pateiksiu jums pavyzdį, kad viskas būtų paprasčiau:

importuoti tensorflow kaip tf # Vietos ženklų kūrimas a = tf. vietos rezervavimo ženklas (tf.float32) b = tf. vietos rezervavimo ženklas (tf.float32) # Padauginimo operacijos priskyrimas w.r.t. a & ampamp b į mazgą mul mul = a * b # Sukurti seanso objektą sess = tf.Session () # Mul vykdymas perduodant reikšmes [1, 3] [2, 4] a ir b atitinkamai output = sess.run ( mul, {a: [1,3], b: [2, 4]}) spausdinti ('Dauginant ab:', išvestis)
 Išvestis: [2. 12.]

Taškai, kuriuos reikia atsiminti vietos rezervavimo ženklai:

  • Vietininkai nėra inicializuoti ir juose nėra duomenų.
  • Vietos ženklui reikia pateikti įvesties ar informacijos santraukų, į kurias atsižvelgiama vykdymo metu.
  • Vykdant vietos rezervavimo ženklą be įvesties, gaunama klaida.

Pažvelkime į priekį ir supraskime - kokie yra kintamieji?

Kintamieji

Giliai mokantis, vietos rezervavimo ženklai naudojami norint savavališkai įvesti jūsų modelį ar diagramą. Be įvesties, jūs taip pat turite modifikuoti grafiką taip, kad jis galėtų sukurti naujus rezultatus w.r.t. tos pačios įvestys. Tam naudosite kintamuosius. Trumpai tariant, kintamasis leidžia jums pridėti tokius parametrus ar mazgą prie diagramos, kurie yra mokomi, ty vertė gali būti pakeista per tam tikrą laikotarpį. Kintamieji apibrėžiami pateikiant jų pradinę vertę ir tipą, kaip parodyta žemiau:

var = tf. Kintamas ([0,4], dtype = tf.flow32)

Pastaba:

  • Jei duomenų tipo nepateikėte aiškiai, „TensorFlow“ konstatuoja kintamojo tipą iš pradinės vertės.
  • „TensorFlow“ turi daugybę savo duomenų tipų, tokių kaip tf.plūdis32 , tf.int32 ir kt. Galite kreiptis į juos visus čia .

Konstantos inicijuojamos, kai skambinate tf.pastovus ir jų vertė niekada negali pasikeisti. Priešingai, skambinant kintamieji nėra inicijuojami tf.Kintamas . Norėdami inicijuoti visus „TensorFlow“ programos kintamuosius, jūs turi aiškiai paskambinkite į specialią operaciją, kaip parodyta žemiau:

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

Visada atminkite, kad kintamasis turi būti inicializuotas prieš pirmą kartą naudojant diagramą.

Pastaba: „TensorFlow“ kintamieji yra atminties buferiai, kuriuose yra tensorių, tačiau, skirtingai nei įprasti, tensoriai, kurie inicijuojami tik paleidus grafiką ir iškart po to ištrinami, kintamieji išlieka vykdant kelis grafiko vykdymus.

Dabar, kai apėmėme pakankamai „TensorFlow“ pagrindų, leiskite mums eiti į priekį ir suprasti, kaip įgyvendinti linijinės regresijos modelį naudojant „TensorFlow“.

Linijinis regresijos modelis naudojant „TensorFlow“

Linijinis regresijos modelis naudojamas numatant nežinomą kintamojo (priklausomo kintamojo) vertę iš žinomos kitų kintamųjų vertės (nepriklausomo kintamojo) naudojant linijinės regresijos lygtį, kaip parodyta žemiau:

Todėl norint sukurti tiesinį modelį, jums reikia:

  1. Priklausomas arba išvesties kintamasis (Y)
  2. Nuolydžio kintamasis (w)
  3. Y - perėmimas arba šališkumas (b)
  4. Nepriklausomas arba įvesties kintamasis (X)

Taigi pradėkime kurti tiesinį modelį naudodami „TensorFlow“:

kas yra pluoštas hadoope

Nukopijuokite kodą spustelėdami toliau pateiktą mygtuką:

# Kintamojo kūrimas parametrų nuolydžiui (W), kurio pradinė vertė yra 0,4 W = tf. Kintamasis ([. 4], tf.float32) # Kintamojo sukūrimas parametrų šališkumui (b), kurio pradinė vertė yra –0,4 b = tf. [-0.4], tf.float32) # Vietos rezervavimo ženklų kūrimas įvedant arba nepriklausomą kintamąjį, žymimas xx = tf.placeholder (tf.float32) # Linijinės regresijos lygtis linear_model = W * x + b # Visų kintamųjų inicijavimas sess = tf.Session () init = tf.global_variables_initializer () sess.run (init) # Regresijos modelio vykdymas norint apskaičiuoti išvestį wrt į pateiktas x reikšmes spausdinti (sess.run (linear_model {x: [1, 2, 3, 4]}))

Išvestis:

[0. 0.40000001 0.80000007 1.20000005]

Aukščiau nurodytas kodas tik atspindi pagrindinę regresijos modelio įgyvendinimo idėją, t. Y. Tai, kaip sekate regresijos tiesės lygtį, kad gautumėte išvestį w.r.t. įvesties reikšmių rinkinys. Tačiau šiame modelyje reikia pridėti dar du dalykus, kad jis būtų visiškai regresinis modelis:

  • Pirma, mes turime pateikti mechanizmą, pagal kurį mūsų modelis galėtų automatiškai treniruotis, remdamasis tam tikru įvesties ir atitinkamo išėjimo rinkiniu.
  • Antras dalykas, kurio mums reikia, yra patvirtinti mūsų apmokytą modelį, lyginant jo išvestį su norima ar tiksline išvestimi, remiantis nurodytu x verčių rinkiniu.

Dabar leiskite mums suprasti, kaip aš galiu įtraukti aukščiau nurodytas funkcijas į savo regresijos modelio kodą.

Nuostolių funkcija - modelio patvirtinimas

Nuostolių funkcija matuoja, kiek dabartinė modelio išvestis yra nuo norimos ar tikslinės išvesties. Aš naudosiu dažniausiai naudojamą nuostolių funkciją savo tiesinės regresijos modeliui, vadinamam Squared Squared Error arba SSE. SSE apskaičiuota vidutinė modelio išvestis (vaizduojama tiesiniu_modeliu) ir norima arba tikslinė išvestis (y) kaip:

y = tf.placeholder (tf.float32) klaida = tiesinis_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]})
 Išvestis: 90.24

Kaip matote, mes gauname didelę nuostolių vertę. Todėl turime pakoreguoti savo svorį (W) ir šališkumą (b), kad sumažintume gaunamą klaidą.

tf.train API - Modelio mokymas

„TensorFlow“ teikia optimizatoriai kurie lėtai keičia kiekvieną kintamąjį, kad sumažintų nuostolių funkciją ar klaidą. Paprasčiausias optimizatorius yra gradientinis nusileidimas . Jis keičia kiekvieną kintamąjį pagal nuostolio išvestinės dydį to kintamojo atžvilgiu.

# Gradiento nusileidimo optimizavimo priemonės optimizavimo priemonės sukūrimas = tf.train.GradientDescentOptimizer (0,01) traukinys = optimizatorius. Sumažinkite (nuostolius) i diapazone (1000): sess.run (traukinys, {x: [1, 2, 3, 4], y: [2, 4, 6, 8]}) spausdinti (sess.run ([W, b]))
 Išvestis: [masyvas ([1.99999964], dtype = float32), masyvas ([9.86305167e-07], dtype = float32)]

Taigi, naudodamiesi „TensorFlow“ sukuriate tiesinį modelį ir mokote jį gauti norimą rezultatą.

Dabar, kai žinote apie gilų mokymąsi, patikrinkite sukūrė patikima internetinė mokymosi įmonė „Edureka“, turinti daugiau nei 250 000 patenkintų besimokančiųjų tinklą visame pasaulyje. „Edureka Deep Learning with TensorFlow“ sertifikavimo mokymo kursas padeda besimokantiesiems tapti ekspertais mokant ir optimizuojant pagrindinius ir konvoliucinius neuroninius tinklus, naudojant realaus laiko projektus ir užduotis kartu su tokiomis sąvokomis kaip „SoftMax“ funkcija, „Auto-encoder Neural Networks“, „Restricted Boltzmann Machine“ (RBM).

Turite mums klausimą? Prašau paminėti tai komentarų skiltyje ir mes su jumis susisieksime.