Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Reduktiotoiminnot | Tensor Operations and Execution
Johdanto TensorFlow'hun
Osio 2. Luku 4
single

single

Reduktiotoiminnot

Pyyhkäise näyttääksesi valikon

Reduktio-operaatiot

Tensor-operaatioiden maailmassa on lukuisia tehtäviä, joissa täytyy vähentää datan ulottuvuuksia joko yhteenvetämällä sitä yhden tai useamman akselin yli. Esimerkiksi, jos käytössä on 2D-tensori (matriisi), reduktio-operaatio voi laskea arvon jokaiselle riville tai sarakkeelle, jolloin tuloksena on 1D-tensori (vektori). TensorFlow tarjoaa joukon operaatiota tämän toteuttamiseen, ja tässä luvussa tutustutaan yleisimmin käytettyihin reduktio-operaatioihin.

Summa, keskiarvo, maksimi ja minimi

TensorFlow tarjoaa seuraavat menetelmät näihin laskutoimituksiin:

  • tf.reduce_sum(): laskee tensorin kaikkien alkioiden summan tai tietyn akselin yli;
  • tf.reduce_mean(): laskee tensorin alkioiden keskiarvon;
  • tf.reduce_max(): määrittää tensorin maksimiarvon;
  • tf.reduce_min(): etsii tensorin minimiarvon.
12345678910111213141516171819
import tensorflow as tf tensor = tf.constant([[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]]) # Calculate sum of all elements total_sum = tf.reduce_sum(tensor) print("Total Sum:", total_sum.numpy()) # Calculate mean of all elements mean_val = tf.reduce_mean(tensor) print("Mean Value:", mean_val.numpy()) # Determine the maximum value max_val = tf.reduce_max(tensor) print("Maximum Value:", max_val.numpy()) # Find the minimum value min_val = tf.reduce_min(tensor) print("Minimum Value:", min_val.numpy())
Note
Huomio

.numpy()-menetelmää käytettiin tensorien muuntamiseen NumPy-taulukoiksi, mikä tarjoaa selkeämmän numeerisen esityksen näytettäessä arvoja.

Operaatiot tietyillä akseleilla

Tensoreilla voi olla useita ulottuvuuksia, ja joskus halutaan suorittaa reduktioita tietyllä akselilla. axis-parametrilla voidaan määrittää, mitä akselia tai akseleita halutaan pienentää.

  • axis=0: operaatio suoritetaan riveittäin (tuloksena sarakevektori);
  • axis=1: operaatio suoritetaan sarakkeittain (tuloksena rivivektori);
  • On mahdollista pienentää useita akseleita samanaikaisesti antamalla lista axis-parametrille;
  • Kun tensorin aste pienenee, voidaan käyttää keepdims=True-asetusta, jolloin pienennetty ulottuvuus säilyy arvolla 1.

2D-tensorille (matriisi):

reduce_sum
1234567891011121314151617181920
import tensorflow as tf tensor = tf.constant([[1., 2.], [3., 4.], [5., 6.]]) # Calculate the sum of each column col_sum = tf.reduce_sum(tensor, axis=0) print("Column-wise Sum:", col_sum.numpy()) # Calculate the maximum of each row col_max = tf.reduce_max(tensor, axis=1) print("Row-wise Max:", col_max.numpy()) # Calculate the mean of the whole tensor (reduce along both directions) # Equivalent to not specifying the axis at all total_mean = tf.reduce_mean(tensor, axis=(0, 1)) print("Total Mean:", total_mean.numpy()) # Calculate the mean of the whole tensor (keeping reduced dimensions) total_mean_dim = tf.reduce_mean(tensor, axis=(0, 1), keepdims=True) print("Total Mean (saving dimensions):", total_mean_dim.numpy())
Note
Huomio

Kun suoritat reduktio-operaation tietyn akselin suhteen, poistat käytännössä kyseisen akselin tensorista ja yhdistät kaikki kyseisen akselin tensorit alkioittain. Sama vaikutus pätee kaikilla ulottuvuuksilla.

Tältä se näyttää 3D-tensorille:

reduce_sum_3d
12345678910111213141516171819
import tensorflow as tf tensor = tf.constant([ [[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]] ]) # Calculate the sum along axis 0 sum_0 = tf.reduce_sum(tensor, axis=0) print("Sum axis 0:\n", sum_0.numpy()) # Calculate the sum along axis 1 sum_1 = tf.reduce_sum(tensor, axis=1) print("Sum axis 1:\n", sum_1.numpy()) # Calculate the sum along axes 0 and 1 sum_0_1 = tf.reduce_sum(tensor, axis=(0, 1)) print("Sum axes 0 and 1:\n", sum_0_1.numpy())
Note
Huomautus

TensorFlowissa on olemassa monia muita reduktio-operaatioita, mutta ne toimivat samoilla periaatteilla.

Tehtävä

Pyyhkäise aloittaaksesi koodauksen

Taustatiedot

Olet data-analyytikko sääntutkimuslaitoksessa. Sinulle on annettu tensori, joka sisältää säähavaintoja useista kaupungeista useiden päivien ajalta. Tensorin rakenne on seuraava:

  • Ulottuvuus 1: edustaa eri kaupunkeja;
  • Ulottuvuus 2: edustaa eri päiviä.
  • Jokainen tensorin alkio on (temperature, humidity) -tyyppinen tupla.

Tavoite

  1. Laske keskimääräinen lämpötila jokaiselle kaupungille kaikkien päivien ajalta.
  2. Laske suurin kosteuslukema kaikista kaupungeista jokaiselle päivälle.

Huom

Tässä tensorissa jokaisen tuplan ensimmäinen luku tarkoittaa kyseisen päivän ja kaupungin lämpötilaa (Celsius-asteina) ja toinen luku tarkoittaa kosteutta (prosentteina).

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 4
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

some-alt