深度学习训练工具包Tools——feature map size计算工具

工具包Tools——feature map size计算工具

def map_size(size, k, s=1, p=0):  # 计算一层的size变化
    new_size = (size - k + 2 * p) / s + 1
    return int(new_size)


def feature_map_size(size, kernel_size: list, stride: list, padding: list = None):
    """

    :param size: 最开始的输入尺寸
    :param kernel_size: 所有特征层的 kernel 的尺寸 列表
    :param stride: 所有特征层的步距
    :param padding: 所有特征层的padding填充
    :return:
    """
    size_list = [size]
    if padding is None:
        padding = []
        for _ in range(len(kernel_size)):
            padding.append(0)
    assert len(kernel_size) == len(stride) == len(padding), 'kernel_size, stride or padding length do not equal.'

    for i, k in enumerate(kernel_size):
        size = map_size(size, k, stride[i], padding[i])
        size_list.append(size)

    print('feature map size is :', size_list)
    for i, v in enumerate(size_list):
        print('第%3d 个conv or Maxpool的尺寸为: %3d' % (i, v))


# 应用示例
kernel_size = [11, 3, 5, 3, 3, 3, 3, 3]
stride = [2, 2, 1, 2, 1, 1, 1, 1]

feature_map_size(255, kernel_size, stride)

输出:

"""
feature map size is : [255, 123, 61, 57, 28, 26, 24, 22, 20]
第  0 个conv or Maxpool的尺寸为: 255
第  1 个conv or Maxpool的尺寸为: 123
第  2 个conv or Maxpool的尺寸为:  61
第  3 个conv or Maxpool的尺寸为:  57
第  4 个conv or Maxpool的尺寸为:  28
第  5 个conv or Maxpool的尺寸为:  26
第  6 个conv or Maxpool的尺寸为:  24
第  7 个conv or Maxpool的尺寸为:  22
第  8 个conv or Maxpool的尺寸为:  20
"""
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值