single
Reduktiotoiminnot
Pyyhkäise näyttääksesi valikon
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 operaatioita tämän toteuttamiseen, ja tässä luvussa tarkastellaan yleisimpiä reduktio-operaatioita.
Summa, keskiarvo, maksimi ja minimi
TensorFlow tarjoaa seuraavat menetelmät näihin laskutoimituksiin:
tf.reduce_sum(): laskee kaikkien tensorin alkioiden summan tai tietyn akselin yli;tf.reduce_mean(): laskee tensorin alkioiden keskiarvon;tf.reduce_max(): määrittää tensorin suurimman arvon;tf.reduce_min(): etsii tensorin pienimmän arvon.
12345678910111213141516171819import 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())
Menetelmää .numpy() käytettiin tensorien muuntamiseen NumPy-taulukoiksi, mikä tarjoaa selkeämmän numeerisen esityksen näytettäessä lukuja.
Operaatioita 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: suorittaa operaation riveittäin (tuloksena sarakevektori);axis=1: suorittaa operaation sarakkeittain (tuloksena rivivektori);- On mahdollista pienentää useita akseleita samanaikaisesti antamalla lista
axis-parametrille; - Kun tensorin aste pienenee, voidaan käyttää
keepdims=Truesäilyttämään pienennetty ulottuvuus arvolla 1.
2D-tensorille (matriisi):
1234567891011121314151617181920import 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())
Kun suoritat reduktio-operaation tietyn akselin suhteen, poistat käytännössä kyseisen akselin tensorista, yhdistäen kaikki kyseisen akselin tensorit alkioittain. Sama vaikutus säilyy riippumatta ulottuvuuksien määrästä.
Tältä se näyttää 3D-tensorille:
12345678910111213141516171819import 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())
TensorFlowissa on olemassa monia muita reduktio-operaatioita, mutta ne toimivat samoilla periaatteilla.
Swipe to start coding
Olet data-analyytikko sääntutkimuslaitoksessa. Sinulle on annettu tensori, joka sisältää säähavaintoja useista kaupungeista useiden päivien ajalta. Tensorilla on seuraava rakenne:
- Ulottuvuus 1: edustaa eri kaupunkeja;
- Ulottuvuus 2: edustaa eri päiviä.
- Jokainen tensorin alkio on
(temperature, humidity)-tyyppinen tupla.
Tavoite
- Laske keskimääräinen lämpötila jokaiselle kaupungille kaikkien päivien ajalta.
- Laske suurin kosteuslukema kaikista kaupungeista jokaiselle päivälle.
Huom
Tässä tensorissa ensimmäinen luku jokaisessa tuplassa edustaa lämpötilaa (Celsius-asteina) ja toinen luku kosteutta (prosentteina) kyseisenä päivänä ja kaupungissa.
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme