single
Reductie-Operaties
Veeg om het menu te tonen
Reductie-operaties
Binnen tensorbewerkingen zijn er talloze taken waarbij het nodig is om de dimensies te reduceren van onze data, bijvoorbeeld door deze samen te vatten over één of meerdere assen. Als we bijvoorbeeld een 2D-tensor (een matrix) hebben, kan een reductie-operatie een waarde berekenen voor elke rij of kolom, wat resulteert in een 1D-tensor (een vector). TensorFlow biedt een reeks operaties om dit te realiseren. In dit hoofdstuk behandelen we de meest gebruikte reductie-operaties.
Som, Gemiddelde, Maximum en Minimum
TensorFlow biedt de volgende methoden voor deze berekeningen:
tf.reduce_sum(): berekent de som van alle elementen in de tensor of langs een specifieke as;tf.reduce_mean(): berekent het gemiddelde van de tensor-elementen;tf.reduce_max(): bepaalt de maximale waarde in de tensor;tf.reduce_min(): vindt de minimale waarde in de tensor.
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())
De methode .numpy() werd gebruikt om de tensors om te zetten naar NumPy-arrays, waardoor de getallen duidelijker worden weergegeven.
Operaties langs specifieke assen
Tensors kunnen meerdere dimensies hebben en soms willen we reducties uitvoeren langs een specifieke as. De parameter axis stelt ons in staat om aan te geven welke as of assen we willen reduceren.
axis=0: voer de operatie uit langs de rijen (resulterend in een kolomvector);axis=1: voer de operatie uit langs de kolommen (resulterend in een rijvector);- Het is mogelijk om tegelijkertijd over meerdere assen te reduceren door een lijst aan de parameter
axiste geven; - Wanneer de rang van de tensor wordt gereduceerd, kun je
keepdims=Truegebruiken om de gereduceerde dimensie als 1 te behouden.
Voor een 2D-tensor (matrix):
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())
Wanneer je een reductie-operatie uitvoert over een specifieke as, verwijder je die as uit de tensor en voeg je alle tensors binnen die as elementgewijs samen. Dit effect blijft hetzelfde voor elk aantal dimensies.
Zo ziet het eruit voor een 3D-tensor:
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())
Veel andere reductie-operaties bestaan in TensorFlow, maar ze werken volgens dezelfde principes.
Veeg om te beginnen met coderen
Achtergrond
Je bent een data scientist bij een weeronderzoeksbureau. Je hebt een tensor ontvangen met weersmetingen uit verschillende steden over meerdere dagen. De tensor heeft de volgende structuur:
- Dimensie 1: vertegenwoordigt verschillende steden;
- Dimensie 2: vertegenwoordigt verschillende dagen.
- Elke invoer in de tensor is een tuple van
(temperature, humidity).
Doelstelling
- Bereken de gemiddelde temperatuur voor elke stad over alle dagen.
- Bereken de maximale luchtvochtigheid over alle steden voor elke dag.
Opmerking
In deze tensor staat het eerste getal in elke tuple voor de temperatuur (in Celsius) en het tweede getal voor de luchtvochtigheid (in procenten) voor die dag en stad.
Oplossing
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.