Re: [問題] convolution with stride VS. pooling
※ 引述《Haikyuu (!!)》之銘言:
: convolution with stride跟pooling都是將feature map變小張的方法
: 例如convolution with stride=2的輸出大小相當於2x2的pooling的輸出大小
: 那想請問這兩者的使用上是怎麼取捨的呢?
: 我認為convolution丟掉的資訊量比較少,所以DCGAN才使用convolution而非pooling
: 來使Discriminator可以分辨細微差異
首先,Striving for simplicity: The all convolutional net提到
'We find that max-pooling can simply be replaced by a convolutional layer
with increased stride without loss in accuracy on several image recognition
benchmarks'
在多個 image classification benchmark上
使用convolution with stride=2替換2x2 pooling並沒有損失acc
Ref: https://goo.gl/Q3c9i7
第二,用convolution with stride會比較快,
以下是我使用pytorch0.4 & python3.6測試的結果
使用CPU intel i5-6500
1. conv + 2*2maxpool = 0.13秒
2. conv with stride2 = 0.009秒
使用GPU gtx1080
1. conv + 2*2maxpool = 0.046秒
2. conv with stride2 = 0.00069
batch size = 64
image size = 100*100
input channel = 3
output channel = 64
kernel size = 3
### CPU
import time
import torch
a = torch.rand(64,3,100,100)
conv = torch.nn.Conv2d(3, 64, 3)
pool = torch.nn.MaxPool2d(2)
start = time.time()
out1 = pool(conv(a))
print(time.time()-start)
conv2 = torch.nn.Conv2d(3, 64, 3, stride=2)
start = time.time()
out2 = conv2(a)
print(time.time()-start)
### GPU
import time
import torch
import torch.nn as nn
import torch.nn.functional as F
class ConvPool(nn.Module):
def __init__(self):
super().__init__()
self.conv = torch.nn.Conv2d(3, 64, 3)
self.pool = torch.nn.MaxPool2d(2)
def forward(self, x):
out = self.pool(F.relu(self.conv(x)))
return out
class ConvStride(nn.Module):
def __init__(self):
super().__init__()
self.conv = torch.nn.Conv2d(3, 64, 3, stride=2)
def forward(self, x):
out = F.relu(self.conv(x))
return out
a = torch.rand(64,3,100,100).to('cuda')
conv_pool = ConvPool().to('cuda')
start = time.time()
out1 = conv_pool(a)
print(time.time()-start)
conv_stride = ConvStride().to('cuda')
start = time.time()
out2 = conv_stride(a)
print(time.time()-start)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.72.69.157
※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1529981935.A.218.html
※ 編輯: robert780612 (211.72.69.157), 06/26/2018 11:00:56
※ 編輯: robert780612 (211.72.69.157), 06/26/2018 11:01:16
推
06/26 14:21,
6年前
, 1F
06/26 14:21, 1F
※ 編輯: robert780612 (211.72.69.157), 06/26/2018 16:37:16
推
06/26 20:40,
6年前
, 2F
06/26 20:40, 2F
推
06/26 22:41,
6年前
, 3F
06/26 22:41, 3F
→
06/26 22:41,
6年前
, 4F
06/26 22:41, 4F
→
06/26 23:10,
6年前
, 5F
06/26 23:10, 5F
推
06/27 02:56,
6年前
, 6F
06/27 02:56, 6F
→
06/27 02:56,
6年前
, 7F
06/27 02:56, 7F
→
06/27 02:56,
6年前
, 8F
06/27 02:56, 8F
已補上gpu數據
※ 編輯: robert780612 (211.72.69.157), 06/27/2018 07:53:41
※ 編輯: robert780612 (211.72.69.157), 06/27/2018 07:54:38
※ 編輯: robert780612 (211.72.69.157), 06/27/2018 07:55:22
→
06/28 10:31,
6年前
, 9F
06/28 10:31, 9F
→
06/28 10:31,
6年前
, 10F
06/28 10:31, 10F
→
06/28 10:31,
6年前
, 11F
06/28 10:31, 11F
→
06/28 10:31,
6年前
, 12F
06/28 10:31, 12F
→
06/28 10:31,
6年前
, 13F
06/28 10:31, 13F
→
06/28 10:31,
6年前
, 14F
06/28 10:31, 14F
→
06/28 10:54,
6年前
, 15F
06/28 10:54, 15F
→
06/28 10:54,
6年前
, 16F
06/28 10:54, 16F
→
06/28 14:58,
6年前
, 17F
06/28 14:58, 17F
→
06/28 15:00,
6年前
, 18F
06/28 15:00, 18F
→
06/28 15:05,
6年前
, 19F
06/28 15:05, 19F
→
06/28 22:49,
6年前
, 20F
06/28 22:49, 20F
→
06/28 22:49,
6年前
, 21F
06/28 22:49, 21F
→
07/01 18:07,
6年前
, 22F
07/01 18:07, 22F
→
07/01 18:07,
6年前
, 23F
07/01 18:07, 23F
推
07/02 09:08,
6年前
, 24F
07/02 09:08, 24F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
DataScience 近期熱門文章
PTT數位生活區 即時熱門文章