In acest codelab, veti invata baza „Hello, World” a ML, unde in loc sa programati reguli explicite intr-un limbaj, cum ar fi Java sau C ++, veti construi un sistem instruit pe date pentru a deduce regulile care determina un relatia dintre numere.
Luati in considerare urmatoarea problema: creati un sistem care efectueaza recunoasterea activitatii pentru urmarirea fitnessului. Este posibil sa aveti acces la viteza cu care merge o persoana si sa incercati sa deduceti activitatea pe baza acelei viteze folosind un conditional.
if (viteza <4) {status = WALKING; }
Puteti extinde acest lucru la rulare cu o alta conditie.
if (viteza <4) {status = WALKING; } else {status = RUNNING; }
Intr-o stare finala, ati putea detecta in mod similar ciclismul.
if (viteza <4) {status = WALKING; } else if (viteza <12) {status = RUNNING; } else {status = BIKING; }
Acum, ia in considerare ce se intampla atunci cand vrei sa incluzi o activitate, cum ar fi golful. Este mai putin evident cum sa creati o regula pentru a determina activitatea.
// Acum ce?
Este extrem de dificil sa scrii un program care sa recunoasca activitatea de golf, deci ce faci? Puteti utiliza ML pentru a rezolva problema!
Conditii prealabile
Inainte de a incerca acest codelab, veti dori sa aveti:
- O cunoastere solida a Python
- Abilitati de programare de baza
Ce veti invata
- Bazele invatarii automate
Ce vei construi
- Primul dvs. model de invatare automata
De ce vei avea nevoie
Daca nu ati creat niciodata un model ML folosind TensorFlow, puteti utiliza Colaboratory, un mediu bazat pe browser care contine toate dependentele necesare. Puteti gasi codul pentru restul codelabului care ruleaza in Colab.
Daca utilizati un IDE diferit, asigurati-va ca aveti instalat Python. De asemenea, veti avea nevoie de TensorFlow si de biblioteca NumPy. Puteti afla mai multe despre si instala TensorFlow aici. Instalati NumPy aici.
Luati in considerare modul traditional de a construi aplicatii, asa cum este reprezentat in urmatoarea diagrama:
Exprimati regulile intr-un limbaj de programare. Actioneaza pe date si programul dvs. ofera raspunsuri **. ** In cazul detectarii activitatii, regulile (codul pe care l-ati scris pentru a defini tipurile de activitate) au actionat asupra datelor (viteza de miscare a persoanei) pentru a produce un raspuns: returneaza valoarea din functia pentru determinarea starii activitatii utilizatorului (indiferent daca mergeau, alergau, mergeau cu bicicleta sau faceau altceva).
Procesul de detectare a starii activitatii prin ML este foarte similar, doar axele sunt diferite.
In loc sa incercati sa definiti regulile si sa le exprimati intr-un limbaj de programare, furnizati raspunsurile (denumite de obicei etichete ) impreuna cu datele, iar aparatul deduce regulile care determina relatia dintre raspunsuri si date. De exemplu, scenariul dvs. de detectare a activitatii ar putea arata astfel intr-un context ML:
Adunati o multime de date si le etichetati pentru a spune in mod eficient „Asa arata mersul pe jos” sau „Asa arata alergarea”. Apoi, computerul poate deduce regulile care determina, din date, care sunt tiparele distincte care denota o anumita activitate.
Dincolo de a fi o metoda alternativa la programarea acelui scenariu, aceasta abordare va ofera, de asemenea, posibilitatea de a deschide noi scenarii, cum ar fi cel de golf care poate nu a fost posibil in cadrul abordarii de programare traditionala bazata pe reguli.
In programarea traditionala, codul dvs. se compileaza intr-un binar care se numeste de obicei program. In ML, elementul pe care il creati din date si etichete se numeste model .
Deci, daca reveniti la aceasta diagrama:
Luati in considerare rezultatul ca este un model, care este folosit astfel in timpul rularii:
Transmiteti modelului unele date, iar modelul foloseste regulile pe care le-a dedus din antrenament pentru a face o predictie, cum ar fi „Aceste date arata ca mersul pe jos” sau „Aceste date arata ca pe bicicleta”.
Luati in considerare urmatoarele seturi de numere. Poti vedea relatia dintre ei?
X:
-1
1
2
3
4
Y:
-2
1
4
7
10
13
Pe masura ce le priviti, s-ar putea sa observati ca valoarea lui X creste cu 1 pe masura ce cititi de la stanga la dreapta si valoarea corespunzatoare a lui Y creste cu 3. Probabil credeti ca Y este egal cu 3X plus sau minus ceva. Apoi, probabil ca te-ai uita la 0 pe X si ai vedea ca Y este 1 si ai avea relatia Y = 3X + 1.
Cam exact asa ati folosi codul pentru a instrui un model pentru a identifica tiparele in date!
Acum, uitati-va la cod pentru a o face.
Cum ati antrena o retea neuronala pentru a face sarcina echivalenta? Folosind date! Alimentandu-l cu un set de X -uri si un set de Y -uri, ar trebui sa fie capabil sa-si dea seama de relatia dintre ele.
Importurile
Incepeti cu importurile. Aici, importati TensorFlow si il numiti tf pentru usurinta in utilizare.
Apoi, importati o biblioteca numita numpy, care reprezinta datele dvs. ca liste usor si rapid.
Cadrul pentru definirea unei retele neuronale ca un set de straturi secventiale se numeste keras, deci importa si asta.
import tensorflow as tf import numpy as np from tensorflow import keras
Definiti si compilati reteaua neuronala
Apoi, creati cea mai simpla retea neuronala posibila. Are un singur strat, acel strat are un singur neuron, iar forma de intrare a acestuia este doar o valoare.
model = tf.keras.Sequential ([keras.
guarras masturbandose pajas trans
violada xxx pelis porno españolas
megan montaner follando maduras americanas
esposas compartidas incesto madre hijos
videos prono trio por sorpresa
xxx incesto real xxx torrent magnet
madres incestuosas incesto jovencitas
vecinas cachondas abuelas a cuatro patas
monica hoyos porno porno español dinero
pilladas cagando pillados follando
folladas extremas videos heroticos
corridas en la garganta suegras españolas follando
enseñando a follar pilladas cagando
jolla pr viejas muy calientes
mujer masturbandose porno por el culo
violadas xxx travestis meando
pornolesvianas mujeres peludas follando
potno peliculas porno traducidas al castellano
maduras españolas anal peliculas eroticas alemanas
guarras.com videos porno trios español
layers.Dense (units = 1, input_shape = [1])])
Apoi, scrieti codul pentru a va compila reteaua neuronala. Cand faceti acest lucru, trebuie sa specificati doua functii – o pierdere si un optimizator **. **
In acest exemplu, stiti ca relatia dintre numere este Y = 3X + 1.
Cand computerul incearca sa afle asta, presupune ca poate Y = 10X + 10. Functia de pierdere masoara raspunsurile ghicite fata de raspunsurile corecte cunoscute si masoara cat de bine sau de rau a facut-o.
Apoi, modelul foloseste functia de optimizare pentru a face o alta presupunere. Pe baza rezultatului functiei de pierdere, incearca sa minimizeze pierderea. In acest moment, poate ca va veni cu ceva de genul Y = 5X + 5. Desi este inca destul de rau, este mai aproape de rezultatul corect (pierderea este mai mica).
Modelul repeta acest lucru pentru numarul de epoci , pe care il veti vedea in scurt timp.
In primul rand, iata cum sa-i spuneti sa utilizeze mean_squared_error pentru pierderea si descendenta stochastica a gradientului (
sgd
) pentru optimizator. Nu trebuie sa intelegeti matematica pentru acestia, dar puteti vedea ca functioneaza!
De-a lungul timpului, veti afla diferitele si adecvate functii de pierdere si optimizare pentru diferite scenarii.
model.compile (optimizator = ‘sgd’, pierdere = ‘mean_squared_error’)
Furnizati datele
Apoi, alimentati cateva date. In acest caz, luati cele sase variabile X si sase Y de mai devreme. Puteti vedea ca relatia dintre acestea este ca Y = 3 X +1, deci unde X este -1, Y este -2.
O biblioteca Python numita NumPy ofera o multime de structuri de date de tip matrice pentru a face acest lucru. Specificati valorile ca o matrice in NumPy cu np.array [].
xs = np.array ([- 1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype = float) ys = np.array ([- 2.0, 1.0, 4.0, 7.0, 10.0, 13.0], dtype = float)
Acum aveti tot codul de care aveti nevoie pentru a defini reteaua neuronala. Urmatorul pas este sa-l antrenezi pentru a vedea daca poate deduce tiparele dintre acele numere si le poate folosi pentru a crea un model.
Procesul de formare a retelei neuronale, unde invata relatia dintre X si Y , se afla in apelul model.fit. Acolo va trece prin bucla inainte de a face o presupunere, de a masura cat de bine sau de rau este (pierderea) sau de a folosi optimizatorul pentru a face o alta presupunere. Aceasta va face acest lucru pentru numarul de epoci pe care le specificati. Cand rulati codul respectiv, veti vedea ca pierderea va fi tiparita pentru fiecare epoca.
model.fit (xs, ys, epochs = 500)
De exemplu, puteti vedea ca pentru primele cateva epoci, valoarea pierderii este destul de mare, dar este din ce in ce mai mica la fiecare pas.
Pe masura ce antrenamentul progreseaza, pierderea devine in curand foarte mica.
Pana la finalizarea antrenamentului, pierderea este extrem de mica, ceea ce arata ca modelul nostru face o treaba excelenta de a deduce relatia dintre numere.
Probabil ca nu aveti nevoie de toate cele 500 de epoci si puteti experimenta cu cantitati diferite. Dupa cum puteti vedea din exemplu, pierderea este cu adevarat mica dupa doar 50 de epoci, deci ar putea fi suficient!
Aveti un model care a fost instruit pentru a invata relatia dintre X si Y. Puteti utiliza metoda model.predict pentru a-i da seama de Y pentru un X necunoscut anterior. De exemplu, daca X este 10, ce credeti Vei fi? Banuiti inainte de a rula urmatorul cod:
print (model.predict ([10.0]))
S-ar putea sa fi crezut 31, dar a ajuns sa fie putin mai mult. De ce crezi ca este?
Retelele neuronale se ocupa de probabilitati, deci a calculat ca exista o probabilitate foarte mare ca relatia dintre X si Y sa fie Y = 3X + 1, dar nu poate sti cu siguranta cu doar sase puncte de date. Rezultatul este foarte aproape de 31, dar nu neaparat de 31.
Pe masura ce lucrati cu retele neuronale, veti vedea ca tiparul se repeta. Aproape intotdeauna va veti ocupa de probabilitati, nu de certitudini si veti face un pic de codificare pentru a afla care este rezultatul pe baza probabilitatilor, in special cand vine vorba de clasificare.
Credeti sau nu, ati acoperit majoritatea conceptelor din ML pe care le veti folosi in scenarii mult mai complexe. Ai invatat cum sa antrenezi o retea neuronala pentru a identifica relatia dintre doua seturi de numere definind reteaua. Ati definit un set de straturi (in acest caz doar unul) care continea neuroni (de asemenea, in acest caz, doar unul), pe care le-ati compilat apoi cu o functie de pierdere si un optimizator.
Colectarea unei retele, a functiei de pierdere si a optimizatorului gestioneaza procesul de ghicire a relatiei dintre numere, masurand cat de bine s-au descurcat si apoi genereaza noi parametri pentru noi presupuneri. Aflati mai multe la TensorFlow.org.
Afla mai multe
Pentru a afla despre modul in care ML si TensorFlow va pot ajuta cu modelele de viziune computerizata, continuati cu Construirea unui model de viziune computerizata cu TensorFlow.








