## DEV Community

Ambarish Ganguly

Posted on

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

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)

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

``````
``````x4 = torch.tensor(