single
Datatyypit
Pyyhkäise näyttääksesi valikon
TensorFlow:n tuetut tietotyypit
TensorFlow tukee monipuolisesti erilaisia tietotyyppejä, jotka soveltuvat eri datan ja operaatioiden tarpeisiin. Yleisimmin käytettyjä tyyppejä ovat:
-
tf.float16,tf.float32,tf.float64: liukulukuja, joissa desimaaliosalla on merkitystä. Nimen numero (esim.16kohdassatf.float16) kertoo käytettyjen bittien määrän.tf.float32on yleinen valinta, koska se tarjoaa hyvän tasapainon tarkkuuden ja laskentanopeuden välillä; -
tf.int8,tf.int16,tf.int32,tf.int64: kokonaislukutyyppejä, joissa ei ole desimaaliosaa. Voi olla sekä positiivisia että negatiivisia arvoja; -
tf.uint8,tf.uint16,tf.uint32,tf.uint64: 'u' tarkoittaa 'unsigned' eli nämä kokonaisluvut ovat aina epänegatiivisia; -
tf.bool: edustaa totuusarvoja (TruetaiFalse); -
tf.string: tekstidatalle.
Kokonaislukutyypeissä suurempi numero nimessä tarkoittaa vain laajempaa arvoaluetta, jonka tyyppi voi tallentaa. Liukulukutyypeissä suurempi numero nimessä viittaa myös parempaan laskennalliseen tarkkuuteen.
TensorFlow:ssa on käytettävissä myös muita tietotyyppejä, mutta aloittelijoille on tärkeää tutustua ensin näihin perusmuotoihin. Kattavan listan TensorFlow:n tukemista tietotyypeistä löydät tältä sivulta TensorFlow:n dokumentaatiosta.
Datan tyypin asettaminen tensorin luomisen yhteydessä
Kun alustat tensorin, voit määrittää sen tyypin käyttämällä dtype-argumenttia:
123456789101112import tensorflow as tf # Creating a tensor of type `float16` tensor_float = tf.constant([1.2, 2.3, 3.4], dtype=tf.float16) # Creating a tensor of type `int64` tensor_int = tf.constant([1, 2, 3], dtype=tf.int64) # Display tensors print(tensor_float) print('-' * 50) print(tensor_int)
Monet tensorin luontifunktiot käyttävät tätä lähestymistapaa. Tämä on käytettävissä esimerkiksi metodeissa kuten tf.Variable(), tf.zeros(), tf.ones(), tf.random.normal(), tf.random.uniform() sekä myös tf.convert_to_tensor().
Datan tyyppien muuntaminen
Entä jos käyttämäsi funktio ei salli suoraa tietotyypin määrittelyä? Tai ehkä sinulla on jo tietyn tyyppinen tensori ja tarvitset sen muuttamista. Näissä tapauksissa sinun täytyy muuntaa tensorit yhdestä tietotyypistä toiseen. Tämä on erityisen tärkeää, koska tietyt neuroverkkotoiminnot tai -kerrokset vaativat usein syötteitä tietyssä muodossa, pääasiassa liukulukuina.
Voit käyttää tf.cast()-funktiota tähän:
123456789101112import tensorflow as tf # Create a tensor tensor_float = tf.constant([-1.2, 2.3, 3.8]) # Convert our `tensor_float` from `float32` to `int32` tensor_int_converted = tf.cast(tensor_float, dtype=tf.int32) # Display a tensor print(tensor_float) print('-' * 50) print(tensor_int_converted)
Huomaa, että kun muunnetaan liukulukutyypistä kokonaislukutyyppiin, TensorFlow suorittaa lattiatoiminnon eli poistaa desimaaliosan. Näin ollen 3.8 muuttuu arvoksi 3 ja -1.2 arvoksi -1.
Ole varovainen muuttaessasi tietotyyppejä, erityisesti siirtyessäsi vähemmän tarkkaan tyyppiin. Voit menettää tietoa prosessin aikana.
Swipe to start coding
Tehtävänäsi on luoda tietyn tietotyypin tensori ja muuntaa se toiseen tietotyyppiin.
- Luo tensori nimeltä
initial_tensor, jonka muoto on(3, 3)ja jonka arvot ovat normaalijakautuneita. Varmista, että tämän tensorin tietotyyppi on 64-bittinen liukuluku. - Muunna
initial_tensortensoriksi nimeltäconverted_tensor, jonka tietotyyppi on 16-bittinen liukuluku.
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme