0
点赞
收藏
分享

微信扫一扫

AdaptiveAvgPool1D

zmhc 2022-02-04 阅读 90

公式:

# average adaptive pool1d
# suppose input data in shape of [N, C, L], `output_size` is m or [m],
# output shape is [N, C, m], adaptive pool divide L dimension
# of input data into m grids averagely and performs poolings in each
# grid to get output.
# adaptive avg pool performs calculations as follow:
#
#     for i in range(m):
#         lstart = floor(i * L / m)
#         lend = ceil((i + 1) * L / m)
#         output[:, :, i] = sum(input[:, :, lstart: lend])/(lstart - lend)
#

import torch
import numpy as np
L = 4
M = 5

input = torch.ones(1, 1, L)
input[0, 0 , 2] = 0
print(input)

AdaptiveAvgPool1D = torch.nn.AdaptiveAvgPool1d(M)
output1 = AdaptiveAvgPool1D(input)
print(output1)

input = np.array(input)
for i in range(M):
    lstart = math.floor(i * L / M)
    lend = math.ceil((i + 1) * L / M)
    print(np.sum(input[:, :, lstart: lend], axis=2) / (lend - lstart))

参考:

paddle.nn - AdaptiveAvgPool1D - 《百度飞桨 PaddlePaddle v2.0 深度学习教程》 - 书栈网 · BookStack

举报

相关推荐

0 条评论