Duomenų mokslas

„Python Tensorflow“ mokymo programa

„Python Tensorflow“ mokymo programa
Šioje pamokoje apžvelgsime „TensorFlow“, kuri yra atviro kodo mašininio mokymosi biblioteka, naudojama kuriant, kuriant ir mokant giliųjų mokymosi modelių. Galima atlikti skaitinius skaičiavimus naudojant „TensorFlow“ biblioteką, kurie duomenų srauto grafikai, kuriuose matematinės operacijos vaizduojamos kaip mazgai, o duomenys - kaip briaunos tarp tų mazgų.

Apskritai aptarsime tris pagrindines šios pamokos temas:

  1. Kas yra „Tensors“ ir „TensorFlow“
  2. ML algoritmų taikymas naudojant „TensorFlow“
  3. „TensorFlow“ naudojimo atvejai

„TensorFlow“ yra puikus „Google“ „Python“ paketas, kuris gerai naudoja duomenų srauto programavimo paradigmą labai optimizuotiems matematiniams skaičiavimams. Kai kurios „TensorFlow“ funkcijos yra:

Dėl visų šių savybių ir mašininio mokymosi algoritmų asortimento „TensorFlow“ įgyvendina gamybos masto biblioteką. Pasinerkime į „TensorFlow“ sąvokas, kad iškart po to rankas suteptume.

„TensorFlow“ diegimas

Kadangi „TensorFlow“ naudosime „Python“ API, naudinga žinoti, kad jis veikia ir su „Python 2“.7 ir 3.3+ versijos. Įdiekime „TensorFlow“ biblioteką prieš pereidami prie tikrųjų pavyzdžių ir koncepcijų. Šį paketą galite įdiegti dviem būdais. Pirmasis apima „Python“ paketų tvarkyklės „pip“ naudojimą:

pip įdiegti tensorflow

Antrasis būdas susijęs su „Anaconda“, paketą galime įdiegti kaip:

conda install -c conda-forge tensorflow

Nedvejodami ieškokite naktinių versijų ir GPU versijų oficialiuose „TensorFlow“ diegimo puslapiuose.

Visiems šios pamokos pavyzdžiams naudosiu „Anaconda“ valdytoją. Paleisiu „Jupyter“ nešiojamąjį kompiuterį:

Dabar, kai esame pasirengę su visais importo teiginiais parašyti kodą, pradėkime nerti į „SciPy“ paketą su keletu praktinių pavyzdžių.

Kas yra Tensoriai?

Tensoriai yra pagrindinės duomenų struktūros, naudojamos „Tensorflow“. Taip, tai tik būdas pateikti duomenis giliai mokantis. Vaizduokime juos čia:

Kaip aprašyta paveikslėlyje, tenzoriai gali būti vadinami n matmenų masyvu kuris leidžia mums vaizduoti duomenis sudėtingais aspektais. Giliai mokydamiesi galime galvoti apie kiekvieną aspektą kaip apie skirtingą duomenų ypatybę. Tai reiškia, kad „Tensors“ gali tapti gana sudėtinga, kai kalbama apie sudėtingus duomenų rinkinius su daugybe funkcijų.

Kai žinosime, kas yra „Tensors“, manau, kad gana lengva sužinoti, kas vyksta „TensorFlow“. Šie terminai reiškia, kaip tenzoriai ar funkcijos gali tekėti duomenų rinkiniuose, kad būtų sukurta vertinga produkcija, kai mes atliekame su juo įvairias operacijas.

Suprasti „TensorFlow“ su „Constants“

Kaip skaitėme aukščiau, „TensorFlow“ leidžia atlikti „Tensors“ mašininio mokymosi algoritmus, kad gautume vertingą rezultatą. Su „TensorFlow“ „Deep Learning“ modelių kūrimas ir mokymas yra tiesus.

„TensorFlow“ ateina su pastatu Skaičiavimo grafikai. Skaičiavimo grafikai yra duomenų srauto grafikai, kuriuose matematinės operacijos vaizduojamos kaip mazgai, o duomenys - kaip briaunos tarp tų mazgų. Parašykime labai paprastą kodo fragmentą, kad pateiktume konkrečią vizualizaciją:

importuoti tensorflow kaip tf
x = tf.pastovus (5)
y = tf.pastovus (6)
z = x * y
spausdinti (z)

Vykdydami šį pavyzdį, pamatysime šį išvestį:

Kodėl neteisingas dauginimas? Ne to tikėjomės. Taip atsitiko todėl, kad ne taip galime atlikti operacijas su „TensorFlow“. Pirmiausia turime pradėti a sesija kad skaičiavimo grafikas veiktų,

Su „Session“ mes galime apgaubti Tensorių operacijų ir būklės kontrolė. Tai reiškia, kad seansas taip pat gali išsaugoti skaičiavimo grafiko rezultatą, kad jis galėtų perduoti tą rezultatą kitai operacijai dujotiekių vykdymo tvarka. Sukurkime sesiją dabar, kad gautume teisingą rezultatą:

# Pradėkite nuo seanso objekto
sesija = tf.Seansas ()
# Pateikite skaičiavimą sesijai ir išsaugokite
rezultatas = sesija.bėgimas (z)
# Atspausdinkite skaičiavimo rezultatą
spausdinti (rezultatas)
# Uždaryti sesiją
sesija.Uždaryti()

Šį kartą mes gavome seansą ir pateikėme skaičiavimą, kurio reikia norint vykdyti mazgus. Vykdydami šį pavyzdį, pamatysime šį išvestį:

Nors gavome „TensorFlow“ įspėjimą, vis tiek gavome teisingą išvestį iš skaičiavimo.

Vieno elemento tenzoriaus operacijos

Kaip ir tai, ką paskutiniame pavyzdyje padauginome du pastovius tenzorius, „TensorFlow“ turime daugybę kitų operacijų, kurias galima atlikti su atskirais elementais:

Vieno elemento operacijos reiškia, kad net ir pateikus masyvą, operacijos bus atliekamos su kiekvienu tos masyvo elementu. Pavyzdžiui:

importuoti tensorflow kaip tf
importuoti numerį kaip np
tensorius = np.masyvas ([2, 5, 8])
tensorius = tf.convert_to_tensor (tensorius, dtype = tf.64)
su tf.Seansas () kaip seansas:
spausdinti (sesija.paleisti (tf.cos (tensorius)))

Vykdydami šį pavyzdį, pamatysime šį išvestį:

Čia supratome dvi svarbias sąvokas:

  1. Bet kurią „NumPy“ masyvą galima lengvai konvertuoti į „Tensor“ naudojant „convert_to_tensor“ funkciją
  2. Operacija buvo atlikta su kiekvienu „NumPy“ masyvo elementu

Vietininkai ir kintamieji

Viename iš ankstesnių skyrių mes apžvelgėme, kaip mes galime naudoti „Tensorflow“ konstantas skaičiavimo grafikams kurti. Tačiau „TensorFlow“ taip pat leidžia mums atlikti įvesties duomenis, kad skaičiavimo grafikas būtų dinamiškas. Tai įmanoma naudojant „Vietos rezervatorius“ ir „Kintamieji“.

Tiesą sakant, vietos rezervatoriuose nėra jokių duomenų ir jie turi būti pateikti tinkamais įvestimis vykdymo metu ir, kaip tikėtasi, be įvesties, jie sukurs klaidą.

Vietininkas gali būti vadinamas susitarimu diagramoje, kad įvestis tikrai bus pateikta vykdymo metu. Čia yra vietos rezervuotojų pavyzdys:

importuoti tensorflow kaip tf
# Du vietos rezervavimo ženklai
x = tf. vietos rezervavimo ženklas (tf.plūdė32)
y = tf. vietos rezervavimo ženklas (tf.plūdė32)
# Daugybos operacijos priskyrimas w.r.t. a & b į mazgą mul
z = x * y
# Sukurkite sesiją
sesija = tf.Seansas ()
# Pateikti vietos rodiklių vertes
rezultatas = sesija.paleisti (z, x: [2, 5], y: [3, 7])
spausdinti ('padauginus x ir y:', rezultatas)

Vykdydami šį pavyzdį, pamatysime šį išvestį:

Dabar, kai turime žinių apie vietos rezervatorius, atkreipkime dėmesį į kintamuosius. Mes žinome, kad lygties rezultatas gali keistis tam pačiam įvesties rinkiniui laikui bėgant. Taigi, kai mes mokome savo modelio kintamąjį, laikui bėgant jis gali pakeisti savo elgesį. Pagal šį scenarijų kintamasis leidžia mums pridėti šiuos mokomus parametrus prie mūsų skaičiavimo grafiko. Kintamąjį galima apibrėžti taip:

x = tf.Kintamasis ([5.2], dtype = tf.plūdė32)

Pirmiau pateiktoje lygtyje x yra kintamasis, nurodant jo pradinę vertę ir duomenų tipą. Jei nepateiksime duomenų tipo, tai „TensorFlow“ pateiks savo pradine verte. Čia rasite „TensorFlow“ duomenų tipus.

Skirtingai nuo konstantos, norėdami inicijuoti visus grafiko kintamuosius, turime iškviesti „Python“ funkciją:

init = tf.global_variables_initializer ()
sesija.paleisti (inicijuoti)

Prieš naudodamiesi savo grafiku, būtinai paleiskite aukščiau nurodytą „TensorFlow“ funkciją.

Tiesinė regresija naudojant „TensorFlow“

Linijinė regresija yra vienas iš labiausiai paplitusių algoritmų, naudojamų ryšiui nustatyti tam tikruose tęstiniuose duomenyse. Šis ryšys tarp koordinačių taškų, sakykime x ir y, vadinamas a hipotezė. Kai kalbame apie tiesinę regresiją, hipotezė yra tiesi linija:

y = mx + c

Čia m yra tiesės nuolydis, o čia - vektorius, vaizduojantis svoriai. c yra pastovus koeficientas (y-perėmimas), o čia jis reiškia Šališkumas. Svoris ir šališkumas vadinami modelio parametrai.

Tiesinės regresijos leidžia mums įvertinti svorio ir šališkumo vertes taip, kad būtų minimalus kaštų funkcija. Galiausiai x yra lygties nepriklausomas kintamasis, o y - priklausomas kintamasis. Dabar pradėkime kurti tiesinį „TensorFlow“ modelį naudodami paprastą kodo fragmentą, kurį paaiškinsime:

importuoti tensorflow kaip tf
# Parametrų nuolydžio (W) kintamieji, kurių pradinė vertė yra 1.1
W = tf.Kintamasis ([1.1], tf.plūdė32)
# Kintamasis šališkumas (b), kurio pradinė vertė yra -1.1
b = tf.Kintamasis ([- 1.1], tf.plūdė32)
# Įvesties arba nepriklausomo kintamojo pateikimo vietos žymimos x
x = tf.vietos rezervavimo ženklas (tf.plūdė32)
# Linijos arba tiesinės regresijos lygtis
tiesinis_modelis = W * x + b
# Visų kintamųjų inicijavimas
sesija = tf.Seansas ()
init = tf.global_variables_initializer ()
sesija.paleisti (inicijuoti)
# Vykdyti regresijos modelį
spausdinti (sesija.paleisti (linear_model x: [2, 5, 7, 9]))

Čia mes padarėme tik tai, ką paaiškinome anksčiau, apibendrinkime čia:

Vykdydami šį pavyzdį, pamatysime šį išvestį:

Paprastas kodo fragmentas tik pateikia pagrindinę idėją, kaip mes galime sukurti regresijos modelį. Bet vis tiek turime atlikti dar kelis veiksmus, kad užbaigtume pastatytą modelį:

Nuostolių funkcija ir modelio patvirtinimas

Norėdami patvirtinti modelį, turime įvertinti, kiek dabartinė galia nukrypsta nuo numatomos galios. Čia yra įvairios nuostolių funkcijos, kurias galima naudoti patvirtinant, bet mes apžvelgsime vieną iš labiausiai paplitusių metodų, Kvadratinės klaidos arba SSE suma.

SSE lygtis pateikiama taip:

E = 1/2 * (t - y) 2

Čia:

Parašykime kodo fragmentą tęskdami paskutinį fragmentą, kad atspindėtume nuostolių vertę:

y = tf.vietos rezervavimo ženklas (tf.plūdė32)
klaida = tiesinis_modelis - y
kvadratas_klaidos = tf.kvadratas (klaida)
nuostolis = tf.sumažinti_sum (kvadrato_klaidos)
spausdinti (sesija.bėgimas (nuostolis, x: [2, 5, 7, 9], y: [2, 4, 6, 8]))

Vykdydami šį pavyzdį, pamatysime šį išvestį:

Akivaizdu, kad nuostolio vertė yra labai maža tam tikram tiesinės regresijos modeliui.

Išvada

Šioje pamokoje apžvelgėme vieną populiariausių „Deep learning and Machine learning“ paketą „TensorFlow“. Mes taip pat padarėme tiesinį regresijos modelį, kurio tikslumas buvo labai didelis.

„HD Remastered“ žaidimai, skirti „Linux“, kurie niekada anksčiau nebuvo išleisti „Linux“
Daugelis žaidimų kūrėjų ir leidėjų siūlo senų žaidimų HD remasterį, kad prailgintų franšizės laiką. Prašome gerbėjų, prašančių suderinamumo su šiuolai...
Kaip naudoti „AutoKey“, norint automatizuoti „Linux“ žaidimus
„AutoKey“ yra darbalaukio automatizavimo įrankis, skirtas „Linux“ ir „X11“, užprogramuotas „Python 3“, „GTK“ ir „Qt“. Naudodami scenarijų ir „MACRO“ f...
Kaip parodyti FPS skaitiklį „Linux“ žaidimuose
„Linux“ žaidimai gavo didelį postūmį, kai „Valve“ paskelbė „Linux“ palaikymą „Steam“ klientui ir jų žaidimams 2012 m. Nuo tada daugelis AAA ir indie ž...