Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
seminar-breakout
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Shashank Suhas
seminar-breakout
Commits
b5b2d4a0
Commit
b5b2d4a0
authored
Oct 01, 2017
by
Yuxin Wu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cleanup the use of preact
parent
760a8112
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
7 additions
and
9 deletions
+7
-9
examples/ResNet/resnet_model.py
examples/ResNet/resnet_model.py
+7
-9
No files found.
examples/ResNet/resnet_model.py
View file @
b5b2d4a0
...
@@ -23,7 +23,6 @@ def resnet_shortcut(l, n_out, stride, nl=tf.identity):
...
@@ -23,7 +23,6 @@ def resnet_shortcut(l, n_out, stride, nl=tf.identity):
def
apply_preactivation
(
l
,
preact
):
def
apply_preactivation
(
l
,
preact
):
if
preact
==
'bnrelu'
:
if
preact
==
'bnrelu'
:
# this is used only for preact-resnet
shortcut
=
l
# preserve identity mapping
shortcut
=
l
# preserve identity mapping
l
=
BNReLU
(
'preact'
,
l
)
l
=
BNReLU
(
'preact'
,
l
)
else
:
else
:
...
@@ -70,26 +69,26 @@ def preresnet_group(l, name, block_func, features, count, stride):
...
@@ -70,26 +69,26 @@ def preresnet_group(l, name, block_func, features, count, stride):
return
l
return
l
def
resnet_basicblock
(
l
,
ch_out
,
stride
,
preact
):
def
resnet_basicblock
(
l
,
ch_out
,
stride
):
l
,
shortcut
=
apply_preactivation
(
l
,
preact
)
shortcut
=
l
l
=
Conv2D
(
'conv1'
,
l
,
ch_out
,
3
,
stride
=
stride
,
nl
=
BNReLU
)
l
=
Conv2D
(
'conv1'
,
l
,
ch_out
,
3
,
stride
=
stride
,
nl
=
BNReLU
)
l
=
Conv2D
(
'conv2'
,
l
,
ch_out
,
3
,
nl
=
get_bn
(
zero_init
=
True
))
l
=
Conv2D
(
'conv2'
,
l
,
ch_out
,
3
,
nl
=
get_bn
(
zero_init
=
True
))
return
l
+
resnet_shortcut
(
shortcut
,
ch_out
,
stride
,
nl
=
get_bn
(
zero_init
=
False
))
return
l
+
resnet_shortcut
(
shortcut
,
ch_out
,
stride
,
nl
=
get_bn
(
zero_init
=
False
))
def
resnet_bottleneck
(
l
,
ch_out
,
stride
,
preact
,
stride_first
=
False
):
def
resnet_bottleneck
(
l
,
ch_out
,
stride
,
stride_first
=
False
):
"""
"""
stride_first: original resnet put stride on first conv. fb.resnet.torch put stride on second conv.
stride_first: original resnet put stride on first conv. fb.resnet.torch put stride on second conv.
"""
"""
l
,
shortcut
=
apply_preactivation
(
l
,
preact
)
shortcut
=
l
l
=
Conv2D
(
'conv1'
,
l
,
ch_out
,
1
,
stride
=
stride
if
stride_first
else
1
,
nl
=
BNReLU
)
l
=
Conv2D
(
'conv1'
,
l
,
ch_out
,
1
,
stride
=
stride
if
stride_first
else
1
,
nl
=
BNReLU
)
l
=
Conv2D
(
'conv2'
,
l
,
ch_out
,
3
,
stride
=
1
if
stride_first
else
stride
,
nl
=
BNReLU
)
l
=
Conv2D
(
'conv2'
,
l
,
ch_out
,
3
,
stride
=
1
if
stride_first
else
stride
,
nl
=
BNReLU
)
l
=
Conv2D
(
'conv3'
,
l
,
ch_out
*
4
,
1
,
nl
=
get_bn
(
zero_init
=
True
))
l
=
Conv2D
(
'conv3'
,
l
,
ch_out
*
4
,
1
,
nl
=
get_bn
(
zero_init
=
True
))
return
l
+
resnet_shortcut
(
shortcut
,
ch_out
*
4
,
stride
,
nl
=
get_bn
(
zero_init
=
False
))
return
l
+
resnet_shortcut
(
shortcut
,
ch_out
*
4
,
stride
,
nl
=
get_bn
(
zero_init
=
False
))
def
se_resnet_bottleneck
(
l
,
ch_out
,
stride
,
preact
):
def
se_resnet_bottleneck
(
l
,
ch_out
,
stride
):
l
,
shortcut
=
apply_preactivation
(
l
,
preact
)
shortcut
=
l
l
=
Conv2D
(
'conv1'
,
l
,
ch_out
,
1
,
nl
=
BNReLU
)
l
=
Conv2D
(
'conv1'
,
l
,
ch_out
,
1
,
nl
=
BNReLU
)
l
=
Conv2D
(
'conv2'
,
l
,
ch_out
,
3
,
stride
=
stride
,
nl
=
BNReLU
)
l
=
Conv2D
(
'conv2'
,
l
,
ch_out
,
3
,
stride
=
stride
,
nl
=
BNReLU
)
l
=
Conv2D
(
'conv3'
,
l
,
ch_out
*
4
,
1
,
nl
=
get_bn
(
zero_init
=
True
))
l
=
Conv2D
(
'conv3'
,
l
,
ch_out
*
4
,
1
,
nl
=
get_bn
(
zero_init
=
True
))
...
@@ -105,8 +104,7 @@ def resnet_group(l, name, block_func, features, count, stride):
...
@@ -105,8 +104,7 @@ def resnet_group(l, name, block_func, features, count, stride):
with
tf
.
variable_scope
(
name
):
with
tf
.
variable_scope
(
name
):
for
i
in
range
(
0
,
count
):
for
i
in
range
(
0
,
count
):
with
tf
.
variable_scope
(
'block{}'
.
format
(
i
)):
with
tf
.
variable_scope
(
'block{}'
.
format
(
i
)):
l
=
block_func
(
l
,
features
,
l
=
block_func
(
l
,
features
,
stride
if
i
==
0
else
1
)
stride
if
i
==
0
else
1
,
'no_preact'
)
# end of each block need an activation
# end of each block need an activation
l
=
tf
.
nn
.
relu
(
l
)
l
=
tf
.
nn
.
relu
(
l
)
return
l
return
l
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment