Pytorch(1) pytorch和tensorflow里面的maxpool

本文探讨了PyTorch和TensorFlow在最大池化操作(MaxPool)上的不同,主要区别在于PyTorch的padding填充方式是四周补0,支持dilation模式,而TensorFlow的'SAME'模式只在图像右侧和下方补0,不支持dilation。通过实例展示了当设置相同参数时,两者输出的不同,并介绍了PyTorch中实现单边加0 padding的方法。
摘要由CSDN通过智能技术生成

pytorch和tensorflow所含的maxpool,虽然名字相同,但是功能是不一样。之前在用pytorch复现darknet里面的yolo-v2时才发现这个问题。在yolov2的第六个maxpool的时候,kernel为2,stride为1,所以
按道理来说呢,输出的边size应该比输入的边size少1,但是yolo的设计是输入和输出的shape要相同。所以才发现了这个问题。

不同之处在于padding的补全方式

pytorch里的maxpool,padding的方式是四周都补0,如果padding等于x,那么输入的feature map就会比原来大上x圈。并且还支持dilation模式Σ( ° △ °|||)︴

而tensorflow里的maxpool,padding方式是分为SAMEVALID,在SAME模式下,padding有时候只会在图像右侧和下方补0,而左侧和上方并不会。不支持dilation。

举个例子
如果输入一个3X3的图片,
1,2,3
4,5,6
7,8,9
对其做kernel_size=2,stride=1的maxpool,那么本应该得到
5,6
8,9

# pytorch版本
import torch
import torch.nn.functional as F
from torch.autograd import Variable

data = torch.FloatTensor([[[[1, 2, 3],
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值