Reductieoperaties
Reductie-operaties
Binnen tensorbewerkingen zijn er talloze taken waarbij het noodzakelijk is om de dimensies van data te reduceren, bijvoorbeeld door deze samen te vatten over één of meerdere assen. Wanneer er bijvoorbeeld een 2D-tensor (een matrix) is, 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 worden de meest gebruikte reductie-operaties besproken.
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 elementen in de tensor;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 in NumPy-arrays, wat een duidelijkere visuele weergave van de getallen biedt bij het weergeven.
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
axis
te geven; - Wanneer de rang van de tensor wordt gereduceerd, kun je
keepdims=True
gebruiken 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 een reductie-operatie wordt uitgevoerd langs een specifieke as, wordt die as feitelijk verwijderd uit de tensor, waarbij alle tensors binnen die as elementgewijs worden samengevoegd. Dit effect blijft hetzelfde, ongeacht het 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 reductieoperaties bestaan in TensorFlow, maar ze werken volgens dezelfde principes.
Swipe to start coding
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
- Bepaal de gemiddelde temperatuur voor elke stad over alle dagen.
- Bepaal de maximale luchtvochtigheid over alle steden voor elke dag.
Opmerking
In deze tensor geeft het eerste getal in elke tuple de temperatuur (in Celsius) aan en het tweede getal 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.
Can you explain what the axis parameter means in more detail?
How does keepdims=True affect the output shape?
Can you show more examples with higher-dimensional tensors?
Awesome!
Completion rate improved to 5.56
Reductieoperaties
Veeg om het menu te tonen
Reductie-operaties
Binnen tensorbewerkingen zijn er talloze taken waarbij het noodzakelijk is om de dimensies van data te reduceren, bijvoorbeeld door deze samen te vatten over één of meerdere assen. Wanneer er bijvoorbeeld een 2D-tensor (een matrix) is, 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 worden de meest gebruikte reductie-operaties besproken.
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 elementen in de tensor;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 in NumPy-arrays, wat een duidelijkere visuele weergave van de getallen biedt bij het weergeven.
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
axis
te geven; - Wanneer de rang van de tensor wordt gereduceerd, kun je
keepdims=True
gebruiken 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 een reductie-operatie wordt uitgevoerd langs een specifieke as, wordt die as feitelijk verwijderd uit de tensor, waarbij alle tensors binnen die as elementgewijs worden samengevoegd. Dit effect blijft hetzelfde, ongeacht het 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 reductieoperaties bestaan in TensorFlow, maar ze werken volgens dezelfde principes.
Swipe to start coding
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
- Bepaal de gemiddelde temperatuur voor elke stad over alle dagen.
- Bepaal de maximale luchtvochtigheid over alle steden voor elke dag.
Opmerking
In deze tensor geeft het eerste getal in elke tuple de temperatuur (in Celsius) aan en het tweede getal de luchtvochtigheid (in procenten) voor die dag en stad.
Oplossing
Bedankt voor je feedback!
single