single
Graafinen Suoritus
Pyyhkäise näyttääksesi valikon
Funktiokoristaja
Funktiokoristaja on työkalu, joka 'kietoutuu' funktion ympärille muuttaen sen käyttäytymistä. TensorFlow:ssa yleisimmin käytetty koristaja on @tf.function, joka muuntaa Python-funktion TensorFlow-grafiksi.
@tf.function-koristajan tarkoitus
Koristajien, kuten @tf.function, ensisijainen tarkoitus on optimoida laskentaa. Kun funktio koristetaan @tf.function:lla, TensorFlow muuntaa funktion erittäin tehokkaaksi grafiksi, joka voidaan suorittaa huomattavasti nopeammin, erityisesti monimutkaisissa operaatioissa. Tämä muunnos mahdollistaa TensorFlow:n optimointien hyödyntämisen ja rinnakkaisuuden käytön, mikä on olennaista koneoppimistehtävien suorituskyvyn kannalta.
Esimerkki
Esimerkki on annettu ymmärryksen parantamiseksi.
1234567891011import tensorflow as tf # Define a simple function and decorate it with `@tf.function` @tf.function def compute_area(radius): return 3.1415 * radius ** 2 # Call the function area = compute_area(tf.constant(3.0)) print(f"The area is: {area.numpy()}")
Tässä koodissa compute_area() muunnetaan TensorFlow-grafiksi, mikä tekee sen suorittamisesta nopeampaa ja tehokkaampaa.
Kuinka graafinen suoritus toimii?
TensorFlow toimii kahdessa tilassa: Eager Execution ja Graph Execution. Oletuksena TensorFlow käyttää Eager Execution -tilaa, jolloin operaatiot suoritetaan sitä mukaa kuin ne määritellään, tarjoten joustavan ja intuitiivisen käyttöliittymän. Eager Execution voi kuitenkin olla vähemmän tehokas monimutkaisissa laskelmissa ja suurissa malleissa.
Tässä kohtaa @tf.function ja graafinen suoritus tulevat käyttöön. Kun käytät @tf.function-koristetta funktiossa, TensorFlow muuntaa kyseisen funktion staattiseksi laskentagrafiksi.
Optimointitekniikat
- Graafin optimointi: TensorFlow optimoi graafin karsimalla käyttämättömät solmut, yhdistämällä päällekkäiset aligraafit ja suorittamalla muita graafitason optimointeja. Tämä johtaa nopeampaan suoritukseen ja pienempään muistinkulutukseen.
- Nopeampi suoritus: graafit suoritetaan nopeammin kuin eager-operaatiot, koska ne vähentävät Pythonin aiheuttamaa ylikuormitusta. Python ei osallistu graafin suorittamiseen, mikä poistaa Python-tulkinnan kutsujen ylikuorman.
- Rinnakkaisuus ja hajautus: graafit mahdollistavat TensorFlow'n tunnistaa helposti rinnakkaisuuden mahdollisuudet ja jakaa laskentatehtävät useille laitteille, kuten CPU:ille ja GPU:ille.
- Välimuisti ja uudelleenkäyttö: kun funktiota, joka on koristeltu
@tf.function-koristeella, kutsutaan samalla syötteen allekirjoituksella, TensorFlow käyttää aiemmin luotua graafia uudelleen, mikä säästää aikaa, koska graafia ei tarvitse luoda uudelleen.
Esimerkki Gradient Tape -menetelmällä
1234567891011import tensorflow as tf @tf.function def compute_gradient(x): with tf.GradientTape() as tape: y = x * x * x return tape.gradient(y, x) x = tf.Variable(3.0) grad = compute_gradient(x) print(f"The gradient at x = {x.numpy()} is {grad.numpy()}")
Tässä esimerkissä compute_gradient on funktio, joka laskee gradientin lausekkeelle y = x^3 annetussa pisteessä x. @tf.function-koristetta käytetään varmistamaan, että funktio suoritetaan TensorFlow-graafina.
Esimerkki ehdollisella logiikalla
1234567891011121314import tensorflow as tf @tf.function def compute_gradient_conditional(x): with tf.GradientTape() as tape: if tf.reduce_sum(x) > 0: y = x * x else: y = x * x * x return tape.gradient(y, x) x = tf.Variable([-2.0, 2.0]) grad = compute_gradient_conditional(x) print(f"The gradient at x = {x.numpy()} is {grad.numpy()}")
Tässä esimerkissä funktio laskee eri gradientteja ehdon perusteella. TensorFlow'n @tf.function ei ainoastaan muuta staattista laskentakaaviota, vaan myös käsittelee dynaamisia elementtejä kuten ehtolauseita ja silmukoita tehokkaasti.
Swipe to start coding
Tässä tehtävässä vertaillaan kahden TensorFlow-funktion suoritusaikoja, jotka suorittavat matriisikertolaskun: toinen käyttää @tf.function-koristetta ja toinen ei.
Vaiheet
- Määrittele
matrix_multiply_optimized-funktio varmistaen, että siinä on@tf.function-koriste. - Täydennä molemmat funktiot laskemalla tulosmatriisien keskiarvo.
- Luo kaksi tasaisesti jakautunutta satunnaismatriisia TensorFlow'n satunnaismatriisien generointitoiminnoilla.
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme