This content originally appeared on DEV Community and was authored by Ambarish Ganguly
I had trouble understanding the AdaptiveAvgPool2d
function in PyTorch. The following examples helped me to teach myself better. Hopefully, somebody may benefit from this.
Example 1
import torch
import torch.nn as nn
import numpy as np
m = nn.AdaptiveAvgPool2d((1))
x = np.array(
[
[ 2. , 3.],
[ 4. , 1.],
])
input = torch.tensor(x)
print(input)
output = m(input)
print(output)
print(torch.mean(input))
The output will be equal to torch.mean(input)
Example 2 with a 3 x 3 x 3 tensor
x = np.array(
[
[
[ 2. , 3. , 2.],
[ 2. , 3. , 2.],
[ 2. , 3. , 2.],
],
[
[ 1. , 4. , 5.],
[ 1. , 4. , 5.],
[ 1. , 4. , 5. ],
],
[
[ 7. , 3. , 2.],
[ 7. , 3. , 2.],
[ 7. , 3. , 2.],
]
])
This is a 3 x 3 x 3 array
input = torch.tensor(x)
m = nn.AdaptiveAvgPool2d((2))
output = m(input)
print(output)
Let's investigate why the 1st element is 2.5
We take a 2 x 2 tensor out of the 3 x 3 x 3 tensor and take the mean and see that it is 2.5
x2 = torch.tensor(np.array([2. , 3. , 2. , 3.]))
torch.mean(x2)
Example 3
We see that the 6th element is 4.5. How is this calculated?
We take the mean of the following section
x3 = torch.tensor(np.array([ 4.0 , 5. , 4. , 5.]))
torch.mean(x3)
Example 4 with a 4 x 3 x 3 tensor
x = np.array(
[
[
[ 2. , 3. , 2.],
[ 2. , 3. , 2.],
[ 2. , 3. , 2.],
],
[
[ 1. , 4. , 5.],
[ 1. , 4. , 5.],
[ 1. , 4. , 5. ],
],
[
[ 7. , 3. , 2.],
[ 7. , 3. , 2.],
[ 7. , 3. , 2.],
],
[
[ 8. , 3. , 2.],
[ 8. , 3. , 2.],
[ 8. , 3. , 2.],
]
])
input = torch.tensor(x)
print(input)
print(input.shape)
This is a 4 x 3 x 3 tensor
m = nn.AdaptiveAvgPool2d([1,1])
output= m(input)
print(output)
Let us explore why the first element is 2.3333
x4 = torch.tensor(
np.array( [ 2. , 3. , 2., 2. , 3. , 2., 2. , 3. , 2.])
)
print(torch.mean(x4))
This content originally appeared on DEV Community and was authored by Ambarish Ganguly
![](https://www.radiofree.org/wp-content/plugins/print-app/icon.jpg)
Ambarish Ganguly | Sciencx (2021-04-18T16:15:04+00:00) AdaptiveAvgPool2d in PyTorch. Retrieved from https://www.scien.cx/2021/04/18/adaptiveavgpool2d-in-pytorch/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.