Tietotyypit
Datan tyypit
Tässä osiossa perehdytään datan tyyppien käsitteeseen TensorFlow'ssa. Samoin kuin ohjelmointikielet luokittelevat numerot ja tekstin tyyppeihin, kuten kokonaisluvut, liukuluvut tai merkkijonot, TensorFlow'n tensorit sisältävät myös omat erityiset tietotyyppinsä.
Saatavilla olevat tietotyypit TensorFlow'ssa
TensorFlow tukee laajaa valikoimaa tietotyyppejä erilaisiin 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 yleisesti käytetty, koska se tarjoaa hyvän tasapainon tarkkuuden ja laskentanopeuden välillä; -
tf.int8,tf.int16,tf.int32,tf.int64: kokonaislukutyyppejä, eli lukuja ilman desimaalipistettä. Voi olla sekä positiivisia että negatiivisia; -
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 se voi tallentaa. Liukulukutyypeissä suurempi numero nimessä viittaa myös parempaan laskennalliseen tarkkuuteen.
TensorFlowissa on saatavilla useampia tietotyyppejä, mutta aloittelijoille on tärkeää tutustua ensin näihin ensisijaisiin tyyppeihin. Kattavan luettelon TensorFlowin tukemista tietotyypeistä löydät tältä sivulta TensorFlow-dokumentaatiosta.
Tietotyypin 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 luontitoiminnot käyttävät tätä lähestymistapaa. Tämä pätee esimerkiksi menetelmissä 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 datan tyypin suoraa määrittelyä? Tai ehkä sinulla on jo tietyn tyyppinen tensori ja tarvitset sen muuttamista. Näissä tapauksissa tensorit täytyy muuntaa tyypistä toiseen. Tämä on erityisen tärkeää, koska tietyt neuroverkkotoiminnot tai -kerrokset vaativat usein syötteitä tietyssä muodossa, pääasiassa liukulukuina.
Tähän voidaan käyttää tf.cast()-funktiota:
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)
Muista, että muunnettaessa liukulukutyypistä kokonaislukutyyppiin TensorFlow suorittaa lattiaoperaation, eli desimaaliosa jätetään pois. Näin ollen 3.8 muuttuu 3:ksi ja -1.2 muuttuu -1:ksi.
Ole varovainen vaihtaessasi tietotyyppejä, erityisesti siirryttäessä vähemmän tarkkaan tyyppiin. Tietoja saattaa hävitä 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ällä tensorilla on 64-bittinen liukulukutyyppi. - Muunna
initial_tensortensoriksi nimeltäconverted_tensor, jonka tietotyyppi on 16-bittinen liukulukutyyppi.
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Mahtavaa!
Completion arvosana parantunut arvoon 6.25
Tietotyypit
Pyyhkäise näyttääksesi valikon
Datan tyypit
Tässä osiossa perehdytään datan tyyppien käsitteeseen TensorFlow'ssa. Samoin kuin ohjelmointikielet luokittelevat numerot ja tekstin tyyppeihin, kuten kokonaisluvut, liukuluvut tai merkkijonot, TensorFlow'n tensorit sisältävät myös omat erityiset tietotyyppinsä.
Saatavilla olevat tietotyypit TensorFlow'ssa
TensorFlow tukee laajaa valikoimaa tietotyyppejä erilaisiin 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 yleisesti käytetty, koska se tarjoaa hyvän tasapainon tarkkuuden ja laskentanopeuden välillä; -
tf.int8,tf.int16,tf.int32,tf.int64: kokonaislukutyyppejä, eli lukuja ilman desimaalipistettä. Voi olla sekä positiivisia että negatiivisia; -
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 se voi tallentaa. Liukulukutyypeissä suurempi numero nimessä viittaa myös parempaan laskennalliseen tarkkuuteen.
TensorFlowissa on saatavilla useampia tietotyyppejä, mutta aloittelijoille on tärkeää tutustua ensin näihin ensisijaisiin tyyppeihin. Kattavan luettelon TensorFlowin tukemista tietotyypeistä löydät tältä sivulta TensorFlow-dokumentaatiosta.
Tietotyypin 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 luontitoiminnot käyttävät tätä lähestymistapaa. Tämä pätee esimerkiksi menetelmissä 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 datan tyypin suoraa määrittelyä? Tai ehkä sinulla on jo tietyn tyyppinen tensori ja tarvitset sen muuttamista. Näissä tapauksissa tensorit täytyy muuntaa tyypistä toiseen. Tämä on erityisen tärkeää, koska tietyt neuroverkkotoiminnot tai -kerrokset vaativat usein syötteitä tietyssä muodossa, pääasiassa liukulukuina.
Tähän voidaan käyttää tf.cast()-funktiota:
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)
Muista, että muunnettaessa liukulukutyypistä kokonaislukutyyppiin TensorFlow suorittaa lattiaoperaation, eli desimaaliosa jätetään pois. Näin ollen 3.8 muuttuu 3:ksi ja -1.2 muuttuu -1:ksi.
Ole varovainen vaihtaessasi tietotyyppejä, erityisesti siirryttäessä vähemmän tarkkaan tyyppiin. Tietoja saattaa hävitä 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ällä tensorilla on 64-bittinen liukulukutyyppi. - Muunna
initial_tensortensoriksi nimeltäconverted_tensor, jonka tietotyyppi on 16-bittinen liukulukutyyppi.
Ratkaisu
Kiitos palautteestasi!
single