![](https://lh3.googleusercontent.com/-4TIJ2CwqwGk/WBNUkqVE8NI/AAAAAAAAAAc/_j9MAoggUGQK-2g3iQCwbXJUdt56nSjHwCLcB/s320/1.png)
i have searched an answer on internet, but i don't understand it, it is as follows:
#Compute input size that leads to a 1x1 output size, among other things
# [filter size, stride, padding]
convnet
=
[[
11
,
4
,
0
],[
3
,
2
,
0
],[
5
,
1
,
2
],[
3
,
2
,
0
],[
3
,
1
,
1
],[
3
,
1
,
1
],[
3
,
1
,
1
],[
3
,
2
,
0
],[
6
,
1
,
0
]]
layer_name
=
[
'conv1'
,
'pool1'
,
'conv2'
,
'pool2'
,
'conv3'
,
'conv4'
,
'conv5'
,
'pool5'
,
'fc6-conv'
]
imsize
=
227
def
outFromIn(isz, layernum
=
9
, net
=
convnet):
if
layernum>
len
(net): layernum
=
len
(net)
totstride
=
1
insize
=
isz
#for layerparams in net:
for
layer
in
range
(layernum):
fsize, stride, pad
=
net[layer]
outsize
=
(insize
-
fsize
+
2
*
pad)
/
stride
+
1
insize
=
outsize
totstride
=
totstride
*
stride
return
outsize, totstride
def
inFromOut( layernum
=
9
, net
=
convnet):
if
layernum>
len
(net): layernum
=
len
(net)
outsize
=
1
#for layerparams in net:
for
layer
in
reversed
(
range
(layernum)):
fsize, stride, pad
=
net[layer]
outsize
=
((outsize
-
1
)
*
stride)
+
fsize
RFsize
=
outsize
return
RFsize
if
__name__
=
=
'__main__'
:
print
"layer output sizes given image = %dx%d"
%
(imsize, imsize)
for
i
in
range
(
len
(convnet)):
p
=
outFromIn(imsize,i
+
1
)
rf
=
inFromOut(i
+
1
)
print
"Layer Name = %s, Output size = %3d, Stride = % 3d, RF size = %3d"
%
(layer_name[i], p[
0
], p[
1
], rf)
and the result is:
![](https://lh3.googleusercontent.com/-4TIJ2CwqwGk/WBNUkqVE8NI/AAAAAAAAAAc/_j9MAoggUGQK-2g3iQCwbXJUdt56nSjHwCLcB/s320/1.png)
but i do as it say, i got different result? could anyone show me more details or different explanation? thank you very much!