Tutorial TensorFlow: aprenentatge profund mitjançant TensorFlow



El tutorial TensorFlow és el tercer bloc de la sèrie. Inclou tots els conceptes bàsics de TensorFlow. També parla de com crear un model lineal senzill.

He dissenyat aquest tutorial TensorFlow per a professionals i entusiastes que estiguin interessats a aplicar l'algorisme d'aprenentatge profund mitjançant TensorFlow per resoldre diversos problemes. TensorFlow és una biblioteca d'aprenentatge profund de codi obert que es basa en el concepte de gràfics de flux de dades per a models de construcció. Permet crear xarxes neuronals a gran escala amb moltes capes.Aprendre l 'ús d' aquesta biblioteca també és una part fonamental del .A continuació es detallen els temes que es tractaran en aquest bloc de tutories de TensorFlow:

  • Què és TensorFlow
  • Fonaments bàsics del codi TensorFlow
  • TensorFlow UseCase

Què són els tensors?

En aquest tutorial de TensorFlow, abans de parlar de TensorFlow, primer entenem-ho què són els tensors . Els tensors no són res més que un fet per representar les dades en un aprenentatge profund.





Tensors - Tutorial TensorFlow - EdurekaCom es mostra a la imatge superior, els tensors són només matrius multidimensionals, que us permeten representar dades de dimensions més altes. En general, Deep Learning tracta de conjunts de dades d’alta dimensió on les dimensions fan referència a diferents funcions presents al conjunt de dades. De fet, el nom 'TensorFlow' s'ha derivat de les operacions que les xarxes neuronals realitzen als tensors. És literalment un flux de tensors. Com que heu entès què són els tensors, anem a seguir endavant en aquest tutorial de TensorFlow i entenem: Què és TensorFlow?

Què és TensorFlow?

TensorFlow és una biblioteca basada en Python que proporciona diferents tipus de funcionalitats per implementar models d’aprenentatge profund. Com s’ha comentat anteriorment, el terme TensorFlow es compon de dos termes: Tensor & Flow:



A TensorFlow, el terme tensor es refereix a la representació de dades com a matriu multidimensional, mentre que el terme flux fa referència a la sèrie d’operacions que es fan als tensors tal com es mostra a la imatge anterior.

Ara hem tractat prou antecedents sobre TensorFlow.



A continuació, en aquest tutorial de TensorFlow parlarem sobre els conceptes bàsics de codi de TensorFlow.

Tutorial TensorFlow: conceptes bàsics del codi

Bàsicament, el procés general d’escriptura d’un programa TensorFlow comporta dos passos:

algoritme d'ordenació de combinació de c ++
  1. Construint un gràfic computacional
  2. Execució d’un gràfic computacional

Deixeu-me explicar-vos els dos passos anteriors un per un:

1. Construint un gràfic computacional

Tan, Què és un gràfic computacional? Bé, un gràfic computacional és una sèrie d’operacions TensorFlow disposades com a nodes al gràfic. Cada node pren 0 o més tensors com a entrada i produeix un tensor com a sortida. Deixeu-me donar-vos un exemple d'un gràfic computacional senzill que consta de tres nodes: a , b & c com es mostra a continuació:

Explicació del gràfic computacional anterior:

  • Nodes constantss'utilitzen per emmagatzemar valors constants, ja que necessita l'entrada zero, però produeix els valors emmagatzemats com a sortida. A l'exemple anterior, a i b són nodes constants amb valors 5 i 6 respectivament.

  • El node c representa l'operació de multiplicar el node constant a amb b. Per tant, l'execució del node c resultarà en la multiplicació del node const a & b.

Bàsicament, es pot pensar en un gràfic computacional com una forma alternativa de conceptualitzar càlculs matemàtics que té lloc en un programa TensorFlow. Les operacions assignades a diferents nodes d'un gràfic computacional es poden realitzar en paral·lel, proporcionant així un millor rendiment en termes de càlculs.

Aquí només descrivim el càlcul, no calcula res, no conté cap valor, només defineix les operacions especificades al vostre codi.

2. Execució d'un gràfic computacional

Prenem l'exemple anterior de gràfic computacional i entenem com executar-lo. A continuació es mostra el codi de l’exemple anterior:

Exemple 1:

import tensorflow as tf # Build a graph a = tf.constant (5.0) b = tf.constant (6.0) c = a * b

Ara, per obtenir la sortida del node c, hem d’executar el gràfic computacional dins de sessió . La sessió col·loca les operacions del gràfic en dispositius, com ara CPU o GPU, i proporciona mètodes per executar-les.

Una sessió encapsula el control i l’estat del temps d’execució de TensorFlow, és a dir, emmagatzema la informació sobre l’ordre en què es realitzaran totes les operacions i passa el resultat de l’operació ja calculada a la següent operació a la canonada. Deixeu-me mostrar-vos com executar el gràfic computacional anterior dins d’una sessió (s’han afegit explicacions de cada línia de codi com a comentari):

# Crea l'objecte de sessió sess = tf.Session () # Executa el gràfic dins d'una sessió i emmagatzema la sortida a una variable output_c = sess.run (c) #Imprimeix la sortida del node c print (output_c) # Tanca la sessió a allibera alguns recursos sess.close ()
 Sortida: 30

Per tant, es tractava d’una sessió i d’executar un gràfic computacional. Ara, parlem de variables i espais reservats que utilitzarem àmpliament mentre es construeix un model d’aprenentatge profund mitjançant TensorFlow.

Constants, marcador de posició i variables

A TensorFlow, les constants, els espais reservats i les variables s’utilitzen per representar diferents paràmetres d’un model d’aprenentatge profund. Com que ja he parlat de constants anteriorment, començaré amb espais reservats.

Posseïdor del lloc:

Una constant TensorFlow us permet emmagatzemar un valor, però, i si voleu que els vostres nodes tinguin entrades en execució? Per a aquest tipus de funcionalitat, s’utilitzen espais reservats que permeten que el gràfic prengui entrades externes com a paràmetres. Bàsicament, un marcador de posició és una promesa d’aportar un valor més tard o durant el temps d’execució. Deixeu-me donar-vos un exemple per simplificar les coses:

import tensorflow as tf # Creació de marcadors de posició a = tf. marcador de posició (tf.float32) b = tf. marcador de posició (tf.float32) # Assignació de l'operació de multiplicació w.r.t. a & ampamp b al node mul mul = a * b # Crea objecte de sessió sess = tf.Session () # Execució de mul passant els valors [1, 3] [2, 4] per a i b respectivament output = sess.run ( mul, {a: [1,3], b: [2, 4]}) print ('Multiplicació d'ab:', sortida)
 Sortida: [2. 12.]

Punts per recordar espais reservats:

  • Els espais reservats no s’inicialitzen i no contenen dades.
  • Cal proporcionar entrades o canals d'informació al marcador de posició que es considerin durant l'execució.
  • L’execució d’un marcador de posició sense entrada genera un error.

Ara, avancem i entenem ... què són les variables?

variables

En l’aprenentatge profund, els espais reservats s’utilitzen per obtenir aportacions arbitràries al vostre model o gràfic. A part de prendre dades, també heu de modificar el gràfic de manera que pugui produir noves sortides w.r.t. mateixes entrades. Per a això utilitzarà variables. En poques paraules, una variable us permet afegir paràmetres o nodes al gràfic que es poden entrenar, és a dir, el valor es pot modificar durant el període de temps. Les variables es defineixen proporcionant el seu valor i tipus inicial, tal com es mostra a continuació:

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

Nota:

  • En cas que no hagueu proporcionat el tipus de dades explícitament, TensorFlow inferirà el tipus de constant / variable a partir del valor inicialitzat.
  • TensorFlow té molts dels seus propis tipus de dades, com ara tf.float32 , tf.int32 etc. Podeu fer referència a totes elles aquí .

Les constants s’inicialitzen quan truqueu tf.constant , i el seu valor mai no pot canviar. Per contra, les variables no s’inicialitzen quan truqueu tf.Variable . Per inicialitzar totes les variables d'un programa TensorFlow, heu de fer-ho haver de truqueu explícitament a una operació especial com es mostra a continuació:

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

Recordeu sempre que s’ha d’inicialitzar una variable abans que s’utilitzi un gràfic per primera vegada.

Nota: Les variables TensorFlow són memòries intermèdies que contenen tensors, però, a diferència dels tensors normals que només s’instancien quan s’executa un gràfic i s’eliminen immediatament després, les variables sobreviuen en múltiples execucions d’un gràfic.

Ara que hem cobert prou conceptes bàsics de TensorFlow, anem endavant i entenem com implementar un model de regressió lineal mitjançant TensorFlow.

com convertir el doble a int

Model de regressió lineal que utilitza TensorFlow

El model de regressió lineal s’utilitza per predir el valor desconegut d’una variable (variable dependent) a partir del valor conegut d’una altra variable (variable independent) mitjançant l’equació de regressió lineal com es mostra a continuació:

Per tant, per crear un model lineal, necessiteu:

  1. Variable dependent o de sortida (Y)
  2. Variable de pendent (w)
  3. I - Intercept or Bias (b)
  4. Variable d'entrada o independent (X)

Comencem, doncs, a construir un model lineal mitjançant TensorFlow:

Copieu el codi fent clic al botó que apareix a continuació:

# Creació de variable per al pendent del paràmetre (W) amb un valor inicial de 0,4 W = tf.Variable ([. 4], tf.float32) # Creació de variable per al biaix del paràmetre (b) amb valor inicial com -0,4 b = tf.Variable ( [-0.4], tf.float32) # Creació de marcadors de posició per proporcionar entrada o variable independent, denotada per xx = tf.placeholder (tf.float32) # Equació de la regressió lineal model_lineal = W * x + b # Inicialització de totes les variables sess = tf.Session () init = tf.global_variables_initializer () sess.run (init) # Execució del model de regressió per calcular el pes de sortida per imprimir els valors x proporcionats (sess.run (model_lineal {x: [1, 2, 3, 4]}))

Sortida:

[0. 0.40000001 0.80000007 1.20000005]

El codi indicat anteriorment només representa la idea bàsica darrere de la implementació del model de regressió, és a dir, com se segueix l’equació de la línia de regressió per obtenir la sortida w.r.t. un conjunt de valors d’entrada. Però, queden dues coses més per afegir en aquest model per convertir-lo en un model de regressió complet:

  • En primer lloc, hem de proporcionar un mecanisme pel qual el nostre model es pugui entrenar automàticament en funció d’un conjunt determinat d’entrades i sortides respectives.
  • La segona cosa que necessitem és validar el nostre model entrenat comparant el seu resultat amb el resultat desitjat o objectiu basat en un conjunt de valors donat.

Ara entenem com puc incorporar les funcionalitats indicades anteriorment al meu codi per al model de regressió.

Funció de pèrdua: validació del model

Una funció de pèrdua mesura la distància entre la sortida actual del model i la sortida desitjada o objectiu. Utilitzaré una funció de pèrdua més utilitzada per al meu model de regressió lineal anomenada Sum of Squared Error o SSE. SSE calculat w.r.t. sortida del model (representada per model_lineal) i sortida desitjada o objectiu (y) com:

y = tf.placeholder (tf.float32) error = linear_model - 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]})
 Sortida: 90.24

Com podeu veure, obtenim una pèrdua elevada. Per tant, hem d’ajustar els pesos (W) i el biaix (b) per reduir l’error que rebem.

tAPI f.train: formació del model

TensorFlow proporciona optimitzadors que canvien lentament cada variable per tal de minimitzar la funció de pèrdua o l’error. L’optimitzador més senzill és baixada de gradient . Modifica cada variable segons la magnitud de la derivada de pèrdua respecte a aquesta variable.

s'estableix el camí de classe per a java
#Creació d'una instància d'optimitzador de descens de gradient optimitzador = tf.train.GradientDescentOptimizer (0,01) train = optimizer.minimize (pèrdua) per a l'interval (1000): sess.run (train, {x: [1, 2, 3, 4], y: [2, 4, 6, 8]}) imprimir (sess.run ([W, b]))
 Sortida: [array ([1.99999964], dtype = float32), array ([9.86305167e-07], dtype = float32)]

Així doncs, és així com creeu un model lineal mitjançant TensorFlow i l’entreneu per obtenir la sortida desitjada.

Ara que ja coneixeu l'aprenentatge profund, consulteu el per Edureka, una empresa d'aprenentatge en línia de confiança amb una xarxa de més de 250.000 estudiants satisfets repartits per tot el món. El curs Edureka Deep Learning with TensorFlow Certification Training ajuda els estudiants a convertir-se en experts en formació i optimització de xarxes neuronals bàsiques i convolucionals mitjançant projectes i assignacions en temps real, juntament amb conceptes com la funció SoftMax, les xarxes neuronals de codificador automàtic, la màquina restringida de Boltzmann (RBM).

Tens alguna pregunta? Esmenta’l a la secció de comentaris i et respondrem.