pytorch API之MaxPool2d

torch.nn.MaxPool2d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)

对于输入信号的输入通道,提供2维最大池化(max pooling)操作

如果输入的大小是(N,C,H,W),那么输出的大小是(N,C,H_out,W_out)和池化窗口大小(kH,kW)的关系是:
$$out(N_i, C_j,k)=max^{kH-1}{m=0}max^{kW-1}{m=0}input(N_{i},C_j,stride[0]h+m,stride[1]w+n)$$

如果padding不是0,会在输入的每一边添加相应数目0
dilation用于控制内核点之间的距离,详细描述在这里

参数kernel_sizestridepaddingdilation数据类型: 可以是一个int类型的数据,此时卷积height和width值相同; 也可以是一个tuple数组(包含来两个int类型的数据),第一个int数据表示height的数值,tuple的第二个int类型的数据表示width的数值

参数:

  • kernel_size(int or tuple) - max pooling的窗口大小
  • stride(int or tupleoptional) - max pooling的窗口移动的步长。默认值是kernel_size
  • padding(int or tupleoptional) - 输入的每一条边补充0的层数
  • dilation(int or tupleoptional) – 一个控制窗口中元素步幅的参数
  • return_indices - 如果等于True,会返回输出最大值的序号,对于上采样操作会有帮助
  • ceil_mode - 如果等于True,计算输出信号大小的时候,会使用向上取整,代替默认的向下取整的操作

shape:
输入: (N,C,H_{in},W_in)
输出: (N,C,H_out,W_out)

import torch
import torch.nn as nn
import torch.autograd as autograd

# pool of square window of size=3, stride=2
m = nn.MaxPool2d(3, stride=2)
# pool of non-square window
m = nn.MaxPool2d((3, 2), stride=(2, 1))
input = autograd.Variable(torch.randn(20, 16, 50, 32))
print(input.shape)
output = m(input)
print(output.shape)

torch.Size([20, 16, 50, 32])
torch.Size([20, 16, 24, 31])

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Keras和PyTorch都是深度学习框架,但它们的设计和实现方式有所不同。Keras是一个高级API,它可以在TensorFlow、Theano和CNTK等后端上运行。而PyTorch是一个动态图框架,它可以更灵活地构建和调试模型。 在使用Keras和PyTorch时,它们的对应关系如下: 1. Keras中的Sequential模型对应PyTorch中的nn.Sequential模块。 2. Keras中的Dense层对应PyTorch中的nn.Linear模块。 3. Keras中的Conv2D层对应PyTorch中的nn.Conv2d模块。 4. Keras中的MaxPooling2D层对应PyTorch中的nn.MaxPool2d模块。 5. Keras中的Dropout层对应PyTorch中的nn.Dropout模块。 6. Keras中的Activation层对应PyTorch中的nn.ReLU模块。 7. Keras中的Optimizer对应PyTorch中的optim模块。 总的来说,Keras和PyTorch都是非常优秀的深度学习框架,它们都有自己的优点和适用场景。选择哪一个框架,应该根据具体的需求和实际情况来决定。 ### 回答2: Keras和PyTorch是两个流行的深度学习框架,它们都是深度学习在工业界和研究领域中最流行的框架之一。在深度学习领域,Keras和PyTorch的选择非常重要,它们都有它们自己的优势和用途。 Keras是TensorFlow的高级API,它提供了一些简单易用的工具和接口,使得深度学习模型的构建变得更加容易。Keras主要的设计目标是让那些不熟悉深入的数学知识的开发者可以快速创建深度学习模型。在Keras的设计中,一些常见的深度学习模型可以被快速地实现和训练。Keras相对于PyTorch而言,提供了更加易用的界面和快速的开发速度,同时还提供了很多可以直接使用的现成的深度学习模型。 PyTorch是一个非常灵活的深度学习库,提供了优秀的支持,包括GPU加速计算、自动求导、动态图等特性。相比Keras,PyTorch更加自由和灵活,允许探索更多的深度学习算法和模型。PyTorch的开发者可以使用它提供的Python语言进行开发。PyTorch还允许用户进行低层次的Tensor操作,而这些操作对于那些需要进行大量复杂运算或者超越标准算法范畴的开发者而言会非常有用。 需要注意的是,尽管Keras和PyTorch在功能和用途上存在一些差异,但是两种工具在很多方面也是相互补充的。总的来说,Keras更适合那些需要快速开发深度学习模型的开发者,而PyTorch则更适合那些需要更加灵活、自由和深入探究深度学习的开发者。两者的共同点在于它们都是开源的,广泛应用于深度学习的实践、工业和研究领域,以及适用于构建复杂的模型和算法。 ### 回答3: Keras和PyTorch都是常用的深度学习框架。Keras是Python编程语言的高级神经网络应用编程接口,它可以在TensorFlow、Theano和CNTK等后端中运行。PyTorch是由Facebook开发的基于Python的深度学习框架。 Keras与PyTorch之间的对应关系是比较相似的。它们都提供易于使用的高级API,以及专业、灵活的低级API。在使用上,Keras的API非常简单,学习起来比较容易,而PyTorchAPI则更加全面和灵活,可以支持更高层次的自定义操作和更复杂的模型。 在模型定义方面,Keras提供的是“模型为序列”的概念,该模型由一系列的层构成,这样可以很容易地定义一些简单的模型。而PyTorch则采用类似于张量的数据结构,这种方式对于更复杂的模型来说更加友好,它还提供了动态图形式,可以更好地处理更难的计算图形构建。 在训练模型时,Keras的API使得训练过程非常简单,只需几行代码就可以完成,并且拥有一些实用的模型评估指标,这对于新手来说非常有帮助。同时,PyTorch也提供了丰富的损失函数和优化算法,因此对于训练中的一些更复杂的需求,例如自定义损失函数和权重初始化等也提供了很好的支持。 总体而言,Keras和PyTorch各有其优点。Keras对于快速建立和训练简单模型及快速上手非常友好,而PyTorch在动态图、flexibility上拥有更强的优势,在处理一些较为复杂的模型时表现很好。最终选择框架还要看用户的需求和使用经验。对于新手来说,Keras或许更为合适;而对于有一定经验和对模型标准的精度要求较高的用户来说,PyTorch则更为适宜。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值