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
180a3461
Commit
180a3461
authored
Jul 06, 2018
by
Yuxin Wu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update docs
parent
759f54b4
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
70 additions
and
129 deletions
+70
-129
.github/ISSUE_TEMPLATE.md
.github/ISSUE_TEMPLATE.md
+5
-6
examples/DoReFa-Net/README.md
examples/DoReFa-Net/README.md
+11
-11
examples/FasterRCNN/README.md
examples/FasterRCNN/README.md
+5
-6
examples/FasterRCNN/config.py
examples/FasterRCNN/config.py
+1
-1
examples/basics/mnist-convnet.py
examples/basics/mnist-convnet.py
+17
-31
examples/basics/mnist-tflayers.py
examples/basics/mnist-tflayers.py
+23
-32
examples/basics/mnist-tfslim.py
examples/basics/mnist-tfslim.py
+3
-16
examples/basics/mnist-visualizations.py
examples/basics/mnist-visualizations.py
+4
-21
examples/basics/svhn-digit-convnet.py
examples/basics/svhn-digit-convnet.py
+1
-5
No files found.
.github/ISSUE_TEMPLATE.md
View file @
180a3461
...
@@ -9,9 +9,9 @@ For any unexpected problems, __PLEASE ALWAYS INCLUDE__:
...
@@ -9,9 +9,9 @@ For any unexpected problems, __PLEASE ALWAYS INCLUDE__:
+
What's the command you run:
+
What's the command you run:
+
Have you made any changes to code? Paste them if any:
+
Have you made any changes to code? Paste them if any:
+
If not, tell us what you did that may be relevant.
+
If not, tell us what you did that may be relevant.
But we may not be able to resolv
e it if there is no reproducible code.
But we may not investigat
e it if there is no reproducible code.
+
Better to paste what you did instead of describing them.
+
Better to paste what you did instead of describing them.
2.
What you observed,
e.g. the entire log:
2.
What you observed,
including but not limited to the __entire__ logs.
+
Better to paste what you observed instead of describing them.
+
Better to paste what you observed instead of describing them.
3.
What you expected, if not obvious.
3.
What you expected, if not obvious.
4.
Your environment:
4.
Your environment:
...
@@ -23,10 +23,9 @@ For any unexpected problems, __PLEASE ALWAYS INCLUDE__:
...
@@ -23,10 +23,9 @@ For any unexpected problems, __PLEASE ALWAYS INCLUDE__:
Feature Requests:
Feature Requests:
+
You can implement a lot of features by extending tensorpack
+
You can implement a lot of features by extending tensorpack
(See http://tensorpack.readthedocs.io/en/latest/tutorial/index.html#extend-tensorpack).
(See http://tensorpack.readthedocs.io/en/latest/tutorial/index.html#extend-tensorpack).
It does not have to be added to tensorpack unless you have a good reason.
It does not have to be added to tensorpack unless you have a good reason.
+
We don't take feature requests for implementing new papers.
+
We don't take feature requests for examples or implementing papers.
If you don't know how, ask it as a usage question.
Usage Questions:
Usage Questions:
...
...
examples/DoReFa-Net/README.md
View file @
180a3461
...
@@ -8,17 +8,17 @@ It also contains an implementation of the following papers:
...
@@ -8,17 +8,17 @@ It also contains an implementation of the following papers:
+
[
Binarized Neural Networks
](
https://arxiv.org/abs/1602.02830
)
, with (W,A,G)=(1,1,32).
+
[
Binarized Neural Networks
](
https://arxiv.org/abs/1602.02830
)
, with (W,A,G)=(1,1,32).
This is a good set of baselines for research in model quantization.
This is a good set of baselines for research in model quantization.
These quantization techniques achieves the following ImageNet performance in this implementation:
These quantization techniques
, when applied on AlexNet,
achieves the following ImageNet performance in this implementation:
| Model |
W,A,G
| Top 1 Validation Error |
| Model |
Bit Width
<br/>
(weights, activations, gradients)
| Top 1 Validation Error |
|:---------------|----------|-----------------------:|
|:---------------|----------
-----------------------------------------
|-----------------------:|
| Full Precision | 32,32,32 | 40.3% |
| Full Precision | 32,32,32
| 40.3% |
| TTQ | t,32,32 | 42.0% |
| TTQ | t,32,32
| 42.0% |
| BWN | 1,32,32 | 44.6% |
| BWN | 1,32,32
| 44.6% |
| BNN | 1,1,32 | 51.9% |
| BNN | 1,1,32
| 51.9% |
| DoReFa | 1,2,32 | 46.6% |
| DoReFa | 1,2,32
| 46.6% |
| DoReFa | 1,2,6 | 46.8% |
| DoReFa | 1,2,6
| 46.8% |
| DoReFa | 1,2,4 | 54.0% |
| DoReFa | 1,2,4
| 54.0% |
These numbers were obtained by training on 8 GPUs with a total batch size of 256.
These numbers were obtained by training on 8 GPUs with a total batch size of 256.
The DoReFa-Net models reach slightly better performance than our paper, due to
The DoReFa-Net models reach slightly better performance than our paper, due to
...
...
examples/FasterRCNN/README.md
View file @
180a3461
...
@@ -60,7 +60,7 @@ Evaluation or prediction will need the same config used during training.
...
@@ -60,7 +60,7 @@ Evaluation or prediction will need the same config used during training.
## Results
## Results
These models are trained with different configurations on trainval35k and evaluated on minival using mAP@IoU=0.50:0.95.
These models are trained with different configurations on trainval35k and evaluated on minival using mAP@IoU=0.50:0.95.
MaskRCNN results contain both b
box and segm
mAP.
MaskRCNN results contain both b
ox and mask
mAP.
| Backbone | mAP
<br/>
(box/mask) | Detectron mAP
<br/>
(box/mask) | Time | Configurations
<br/>
(click to expand) |
| Backbone | mAP
<br/>
(box/mask) | Detectron mAP
<br/>
(box/mask) | Time | Configurations
<br/>
(click to expand) |
| - | - | - | - | - |
| - | - | - | - | - |
...
@@ -74,12 +74,11 @@ MaskRCNN results contain both bbox and segm mAP.
...
@@ -74,12 +74,11 @@ MaskRCNN results contain both bbox and segm mAP.
| R101-C4 | 40.8/35.1 | | 63h on 8 V100s |
<details><summary>
standard
</summary>
`MODE_MASK=True `
<br/>
`BACKBONE.RESNET_NUM_BLOCK=[3,4,23,3]`
</details>
|
| R101-C4 | 40.8/35.1 | | 63h on 8 V100s |
<details><summary>
standard
</summary>
`MODE_MASK=True `
<br/>
`BACKBONE.RESNET_NUM_BLOCK=[3,4,23,3]`
</details>
|
<a
id=
"ft1"
>
1
</a>
: Slightly different configurations.
<a
id=
"ft1"
>
1
</a>
: Slightly different configurations.
<a
id=
"ft2"
>
2
</a>
: Number from
[
Group Normalization
](
https://arxiv.org/abs/1803.08494
)
The two R50-C4 360k models have the same configuration __and mAP__
<a
id=
"ft2"
>
2
</a>
: Numbers taken from
[
Group Normalization
](
https://arxiv.org/abs/1803.08494
)
as the
`R50-C4-2x`
entries in
[
Detectron Model Zoo
](
https://github.com/facebookresearch/Detectron/blob/master/MODEL_ZOO.md#end-to-end-faster--mask-r-cnn-baselines
)
.
Performance in
[
Detectron
](
https://github.com/facebookresearch/Detectron/
)
can be reproduced
.
The other models listed here do not correspond to any configurations in Detectron.
Note that most of these numbers are better than what's in the paper.
## Notes
## Notes
...
...
examples/FasterRCNN/config.py
View file @
180a3461
...
@@ -49,7 +49,7 @@ _C = config # short alias to avoid coding
...
@@ -49,7 +49,7 @@ _C = config # short alias to avoid coding
# mode flags ---------------------
# mode flags ---------------------
_C
.
TRAINER
=
'replicated'
# options: 'horovod', 'replicated'
_C
.
TRAINER
=
'replicated'
# options: 'horovod', 'replicated'
_C
.
MODE_MASK
=
True
_C
.
MODE_MASK
=
True
# FasterRCNN or MaskRCNN
_C
.
MODE_FPN
=
False
_C
.
MODE_FPN
=
False
# dataset -----------------------
# dataset -----------------------
...
...
examples/basics/mnist-convnet.py
View file @
180a3461
...
@@ -2,8 +2,6 @@
...
@@ -2,8 +2,6 @@
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
# File: mnist-convnet.py
# File: mnist-convnet.py
import
os
import
argparse
import
tensorflow
as
tf
import
tensorflow
as
tf
"""
"""
MNIST ConvNet example.
MNIST ConvNet example.
...
@@ -50,8 +48,6 @@ class Model(ModelDesc):
...
@@ -50,8 +48,6 @@ class Model(ModelDesc):
.
Dropout
(
'dropout'
,
rate
=
0.5
)
.
Dropout
(
'dropout'
,
rate
=
0.5
)
.
FullyConnected
(
'fc1'
,
10
,
activation
=
tf
.
identity
)())
.
FullyConnected
(
'fc1'
,
10
,
activation
=
tf
.
identity
)())
tf
.
nn
.
softmax
(
logits
,
name
=
'prob'
)
# a Bx10 with probabilities
# a vector of length B with loss of each sample
# a vector of length B with loss of each sample
cost
=
tf
.
nn
.
sparse_softmax_cross_entropy_with_logits
(
logits
=
logits
,
labels
=
label
)
cost
=
tf
.
nn
.
sparse_softmax_cross_entropy_with_logits
(
logits
=
logits
,
labels
=
label
)
cost
=
tf
.
reduce_mean
(
cost
,
name
=
'cross_entropy_loss'
)
# the average cross-entropy loss
cost
=
tf
.
reduce_mean
(
cost
,
name
=
'cross_entropy_loss'
)
# the average cross-entropy loss
...
@@ -59,15 +55,16 @@ class Model(ModelDesc):
...
@@ -59,15 +55,16 @@ class Model(ModelDesc):
correct
=
tf
.
cast
(
tf
.
nn
.
in_top_k
(
logits
,
label
,
1
),
tf
.
float32
,
name
=
'correct'
)
correct
=
tf
.
cast
(
tf
.
nn
.
in_top_k
(
logits
,
label
,
1
),
tf
.
float32
,
name
=
'correct'
)
accuracy
=
tf
.
reduce_mean
(
correct
,
name
=
'accuracy'
)
accuracy
=
tf
.
reduce_mean
(
correct
,
name
=
'accuracy'
)
# This will monitor training error
(in a moving_average fashion):
# This will monitor training error
& accuracy (in a moving average fashion). The value will be automatically
# 1. writ
e the value
to tensosrboard
# 1. writ
ten
to tensosrboard
# 2. writ
e the value
to stat.json
# 2. writ
ten
to stat.json
# 3. print
the value
after each epoch
# 3. print
ed
after each epoch
train_error
=
tf
.
reduce_mean
(
1
-
correct
,
name
=
'train_error'
)
train_error
=
tf
.
reduce_mean
(
1
-
correct
,
name
=
'train_error'
)
summary
.
add_moving_summary
(
train_error
,
accuracy
)
summary
.
add_moving_summary
(
train_error
,
accuracy
)
# Use a regex to find parameters to apply weight decay.
# Use a regex to find parameters to apply weight decay.
# Here we apply a weight decay on all W (weight matrix) of all fc layers
# Here we apply a weight decay on all W (weight matrix) of all fc layers
# If you don't like regex, you can certainly define the cost in any other methods.
wd_cost
=
tf
.
multiply
(
1e-5
,
wd_cost
=
tf
.
multiply
(
1e-5
,
regularize_cost
(
'fc.*/W'
,
tf
.
nn
.
l2_loss
),
regularize_cost
(
'fc.*/W'
,
tf
.
nn
.
l2_loss
),
name
=
'regularize_loss'
)
name
=
'regularize_loss'
)
...
@@ -76,6 +73,7 @@ class Model(ModelDesc):
...
@@ -76,6 +73,7 @@ class Model(ModelDesc):
# monitor histogram of all weight (of conv and fc layers) in tensorboard
# monitor histogram of all weight (of conv and fc layers) in tensorboard
summary
.
add_param_summary
((
'.*/W'
,
[
'histogram'
,
'rms'
]))
summary
.
add_param_summary
((
'.*/W'
,
[
'histogram'
,
'rms'
]))
# the function should return the total cost to be optimized
return
total_cost
return
total_cost
def
optimizer
(
self
):
def
optimizer
(
self
):
...
@@ -84,7 +82,7 @@ class Model(ModelDesc):
...
@@ -84,7 +82,7 @@ class Model(ModelDesc):
global_step
=
get_global_step_var
(),
global_step
=
get_global_step_var
(),
decay_steps
=
468
*
10
,
decay_steps
=
468
*
10
,
decay_rate
=
0.3
,
staircase
=
True
,
name
=
'learning_rate'
)
decay_rate
=
0.3
,
staircase
=
True
,
name
=
'learning_rate'
)
# This will also put the summary in tensorboard, stat.json and print in terminal
# This will also put the summary in tensorboard, stat.json and print in terminal
,
# but this time without moving average
# but this time without moving average
tf
.
summary
.
scalar
(
'lr'
,
lr
)
tf
.
summary
.
scalar
(
'lr'
,
lr
)
return
tf
.
train
.
AdamOptimizer
(
lr
)
return
tf
.
train
.
AdamOptimizer
(
lr
)
...
@@ -99,16 +97,22 @@ def get_data():
...
@@ -99,16 +97,22 @@ def get_data():
return
train
,
test
return
train
,
test
def
get_config
():
if
__name__
==
'__main__'
:
# automatically setup the directory train_log/mnist-convnet for logging
logger
.
auto_set_dir
()
dataset_train
,
dataset_test
=
get_data
()
dataset_train
,
dataset_test
=
get_data
()
# How many iterations you want in each epoch.
# How many iterations you want in each epoch.
# This
is the default value, don't actually need to set it in the config
# This
(data.size()) is the default value.
steps_per_epoch
=
dataset_train
.
size
()
steps_per_epoch
=
dataset_train
.
size
()
# get the config which contains everything necessary in a training
# get the config which contains everything necessary in a training
return
TrainConfig
(
config
=
TrainConfig
(
model
=
Model
(),
model
=
Model
(),
dataflow
=
dataset_train
,
# the DataFlow instance for training
# The input source for training. FeedInput is slow, this is just for demo purpose.
# In practice it's best to use QueueInput or others. See tutorials for details.
data
=
FeedInput
(
dataset_train
),
callbacks
=
[
callbacks
=
[
ModelSaver
(),
# save the model after every epoch
ModelSaver
(),
# save the model after every epoch
MaxSaver
(
'validation_accuracy'
),
# save the model with highest accuracy (prefix 'validation_')
MaxSaver
(
'validation_accuracy'
),
# save the model with highest accuracy (prefix 'validation_')
...
@@ -119,22 +123,4 @@ def get_config():
...
@@ -119,22 +123,4 @@ def get_config():
steps_per_epoch
=
steps_per_epoch
,
steps_per_epoch
=
steps_per_epoch
,
max_epoch
=
100
,
max_epoch
=
100
,
)
)
if
__name__
==
'__main__'
:
parser
=
argparse
.
ArgumentParser
()
parser
.
add_argument
(
'--gpu'
,
help
=
'comma separated list of GPU(s) to use.'
)
parser
.
add_argument
(
'--load'
,
help
=
'load model'
)
args
=
parser
.
parse_args
()
if
args
.
gpu
:
os
.
environ
[
'CUDA_VISIBLE_DEVICES'
]
=
args
.
gpu
# automatically setup the directory train_log/mnist-convnet for logging
logger
.
auto_set_dir
()
config
=
get_config
()
if
args
.
load
:
config
.
session_init
=
SaverRestore
(
args
.
load
)
# SimpleTrainer is slow, this is just a demo.
# You can use QueueInputTrainer instead
launch_train_with_config
(
config
,
SimpleTrainer
())
launch_train_with_config
(
config
,
SimpleTrainer
())
examples/basics/mnist-tflayers.py
View file @
180a3461
...
@@ -2,8 +2,6 @@
...
@@ -2,8 +2,6 @@
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
# File: mnist-tflayers.py
# File: mnist-tflayers.py
import
os
import
argparse
import
tensorflow
as
tf
import
tensorflow
as
tf
"""
"""
MNIST ConvNet example using tf.layers
MNIST ConvNet example using tf.layers
...
@@ -20,25 +18,30 @@ from tensorpack.tfutils import summary, get_current_tower_context
...
@@ -20,25 +18,30 @@ from tensorpack.tfutils import summary, get_current_tower_context
from
tensorpack.dataflow
import
dataset
from
tensorpack.dataflow
import
dataset
IMAGE_SIZE
=
28
IMAGE_SIZE
=
28
# Monkey-patch tf.layers to support argscope.
enable_argscope_for_module
(
tf
.
layers
)
enable_argscope_for_module
(
tf
.
layers
)
class
Model
(
ModelDesc
):
class
Model
(
ModelDesc
):
def
inputs
(
self
):
def
inputs
(
self
):
"""
"""
Define all the inputs (with type, shape, name) that
Define all the inputs (with type, shape, name) that the graph will need.
the graph will need.
"""
"""
return
[
tf
.
placeholder
(
tf
.
float32
,
(
None
,
IMAGE_SIZE
,
IMAGE_SIZE
),
'input'
),
return
[
tf
.
placeholder
(
tf
.
float32
,
(
None
,
IMAGE_SIZE
,
IMAGE_SIZE
),
'input'
),
tf
.
placeholder
(
tf
.
int32
,
(
None
,),
'label'
)]
tf
.
placeholder
(
tf
.
int32
,
(
None
,),
'label'
)]
def
build_graph
(
self
,
image
,
label
):
def
build_graph
(
self
,
image
,
label
):
"""This function should build the model which takes the input variables
and return cost at the end"""
# In tensorflow, inputs to convolution function are assumed to be
# In tensorflow, inputs to convolution function are assumed to be
# NHWC. Add a single channel here.
# NHWC. Add a single channel here.
image
=
tf
.
expand_dims
(
image
,
3
)
image
=
tf
.
expand_dims
(
image
,
3
)
image
=
image
*
2
-
1
# center the pixels values at zero
image
=
image
*
2
-
1
# center the pixels values at zero
# The context manager `argscope` sets the default option for all the layers under
# this context. Here we use 32 channel convolution with shape 3x3
with
argscope
([
tf
.
layers
.
conv2d
],
padding
=
'same'
,
activation
=
tf
.
nn
.
relu
):
with
argscope
([
tf
.
layers
.
conv2d
],
padding
=
'same'
,
activation
=
tf
.
nn
.
relu
):
l
=
tf
.
layers
.
conv2d
(
image
,
32
,
3
,
name
=
'conv0'
)
l
=
tf
.
layers
.
conv2d
(
image
,
32
,
3
,
name
=
'conv0'
)
l
=
tf
.
layers
.
max_pooling2d
(
l
,
2
,
2
,
padding
=
'valid'
)
l
=
tf
.
layers
.
max_pooling2d
(
l
,
2
,
2
,
padding
=
'valid'
)
...
@@ -52,8 +55,6 @@ class Model(ModelDesc):
...
@@ -52,8 +55,6 @@ class Model(ModelDesc):
training
=
get_current_tower_context
()
.
is_training
)
training
=
get_current_tower_context
()
.
is_training
)
logits
=
tf
.
layers
.
dense
(
l
,
10
,
activation
=
tf
.
identity
,
name
=
'fc1'
)
logits
=
tf
.
layers
.
dense
(
l
,
10
,
activation
=
tf
.
identity
,
name
=
'fc1'
)
tf
.
nn
.
softmax
(
logits
,
name
=
'prob'
)
# a Bx10 with probabilities
# a vector of length B with loss of each sample
# a vector of length B with loss of each sample
cost
=
tf
.
nn
.
sparse_softmax_cross_entropy_with_logits
(
logits
=
logits
,
labels
=
label
)
cost
=
tf
.
nn
.
sparse_softmax_cross_entropy_with_logits
(
logits
=
logits
,
labels
=
label
)
cost
=
tf
.
reduce_mean
(
cost
,
name
=
'cross_entropy_loss'
)
# the average cross-entropy loss
cost
=
tf
.
reduce_mean
(
cost
,
name
=
'cross_entropy_loss'
)
# the average cross-entropy loss
...
@@ -61,15 +62,16 @@ class Model(ModelDesc):
...
@@ -61,15 +62,16 @@ class Model(ModelDesc):
correct
=
tf
.
cast
(
tf
.
nn
.
in_top_k
(
logits
,
label
,
1
),
tf
.
float32
,
name
=
'correct'
)
correct
=
tf
.
cast
(
tf
.
nn
.
in_top_k
(
logits
,
label
,
1
),
tf
.
float32
,
name
=
'correct'
)
accuracy
=
tf
.
reduce_mean
(
correct
,
name
=
'accuracy'
)
accuracy
=
tf
.
reduce_mean
(
correct
,
name
=
'accuracy'
)
# This will monitor training error
(in a moving_average fashion):
# This will monitor training error
& accuracy (in a moving average fashion). The value will be automatically
# 1. writ
e the value to tenso
rboard
# 1. writ
ten to tensos
rboard
# 2. writ
e the value
to stat.json
# 2. writ
ten
to stat.json
# 3. print
the value
after each epoch
# 3. print
ed
after each epoch
train_error
=
tf
.
reduce_mean
(
1
-
correct
,
name
=
'train_error'
)
train_error
=
tf
.
reduce_mean
(
1
-
correct
,
name
=
'train_error'
)
summary
.
add_moving_summary
(
train_error
,
accuracy
)
summary
.
add_moving_summary
(
train_error
,
accuracy
)
# Use a regex to find parameters to apply weight decay.
# Use a regex to find parameters to apply weight decay.
# Here we apply a weight decay on all W (weight matrix) of all fc layers
# Here we apply a weight decay on all W (weight matrix) of all fc layers
# If you don't like regex, you can certainly define the cost in any other methods.
wd_cost
=
tf
.
multiply
(
1e-5
,
wd_cost
=
tf
.
multiply
(
1e-5
,
regularize_cost
(
'fc.*/kernel'
,
tf
.
nn
.
l2_loss
),
regularize_cost
(
'fc.*/kernel'
,
tf
.
nn
.
l2_loss
),
name
=
'regularize_loss'
)
name
=
'regularize_loss'
)
...
@@ -78,6 +80,7 @@ class Model(ModelDesc):
...
@@ -78,6 +80,7 @@ class Model(ModelDesc):
# monitor histogram of all weight (of conv and fc layers) in tensorboard
# monitor histogram of all weight (of conv and fc layers) in tensorboard
summary
.
add_param_summary
((
'.*/kernel'
,
[
'histogram'
,
'rms'
]))
summary
.
add_param_summary
((
'.*/kernel'
,
[
'histogram'
,
'rms'
]))
# the function should return the total cost to be optimized
return
total_cost
return
total_cost
def
optimizer
(
self
):
def
optimizer
(
self
):
...
@@ -98,16 +101,22 @@ def get_data():
...
@@ -98,16 +101,22 @@ def get_data():
return
train
,
test
return
train
,
test
def
get_config
():
if
__name__
==
'__main__'
:
# automatically setup the directory train_log/mnist-convnet for logging
logger
.
auto_set_dir
()
dataset_train
,
dataset_test
=
get_data
()
dataset_train
,
dataset_test
=
get_data
()
# How many iterations you want in each epoch.
# How many iterations you want in each epoch.
# This
is the default value, don't actually need to set it in the config
# This
(data.size()) is the default value.
steps_per_epoch
=
dataset_train
.
size
()
steps_per_epoch
=
dataset_train
.
size
()
# get the config which contains everything necessary in a training
# get the config which contains everything necessary in a training
return
TrainConfig
(
config
=
TrainConfig
(
model
=
Model
(),
model
=
Model
(),
dataflow
=
dataset_train
,
# the DataFlow instance for training
# The input source for training. FeedInput is slow, this is just for demo purpose.
# In practice it's best to use QueueInput or others. See tutorials for details.
data
=
FeedInput
(
dataset_train
),
callbacks
=
[
callbacks
=
[
ModelSaver
(),
# save the model after every epoch
ModelSaver
(),
# save the model after every epoch
MaxSaver
(
'validation_accuracy'
),
# save the model with highest accuracy (prefix 'validation_')
MaxSaver
(
'validation_accuracy'
),
# save the model with highest accuracy (prefix 'validation_')
...
@@ -118,22 +127,4 @@ def get_config():
...
@@ -118,22 +127,4 @@ def get_config():
steps_per_epoch
=
steps_per_epoch
,
steps_per_epoch
=
steps_per_epoch
,
max_epoch
=
100
,
max_epoch
=
100
,
)
)
if
__name__
==
'__main__'
:
parser
=
argparse
.
ArgumentParser
()
parser
.
add_argument
(
'--gpu'
,
help
=
'comma separated list of GPU(s) to use.'
)
parser
.
add_argument
(
'--load'
,
help
=
'load model'
)
args
=
parser
.
parse_args
()
if
args
.
gpu
:
os
.
environ
[
'CUDA_VISIBLE_DEVICES'
]
=
args
.
gpu
# automatically setup the directory train_log/mnist-convnet for logging
logger
.
auto_set_dir
()
config
=
get_config
()
if
args
.
load
:
config
.
session_init
=
SaverRestore
(
args
.
load
)
# SimpleTrainer is slow, this is just a demo.
# You can use QueueInputTrainer instead
launch_train_with_config
(
config
,
SimpleTrainer
())
launch_train_with_config
(
config
,
SimpleTrainer
())
examples/basics/mnist-tfslim.py
View file @
180a3461
...
@@ -2,8 +2,6 @@
...
@@ -2,8 +2,6 @@
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
# File: mnist-tfslim.py
# File: mnist-tfslim.py
import
os
import
argparse
"""
"""
MNIST ConvNet example using TensorFlow-slim.
MNIST ConvNet example using TensorFlow-slim.
Mostly the same as 'mnist-convnet.py',
Mostly the same as 'mnist-convnet.py',
...
@@ -45,8 +43,6 @@ class Model(ModelDesc):
...
@@ -45,8 +43,6 @@ class Model(ModelDesc):
l
=
slim
.
layers
.
dropout
(
l
,
is_training
=
is_training
)
l
=
slim
.
layers
.
dropout
(
l
,
is_training
=
is_training
)
logits
=
slim
.
layers
.
fully_connected
(
l
,
10
,
activation_fn
=
None
,
scope
=
'fc1'
)
logits
=
slim
.
layers
.
fully_connected
(
l
,
10
,
activation_fn
=
None
,
scope
=
'fc1'
)
tf
.
nn
.
softmax
(
logits
,
name
=
'prob'
)
cost
=
tf
.
nn
.
sparse_softmax_cross_entropy_with_logits
(
logits
=
logits
,
labels
=
label
)
cost
=
tf
.
nn
.
sparse_softmax_cross_entropy_with_logits
(
logits
=
logits
,
labels
=
label
)
cost
=
tf
.
reduce_mean
(
cost
,
name
=
'cross_entropy_loss'
)
cost
=
tf
.
reduce_mean
(
cost
,
name
=
'cross_entropy_loss'
)
...
@@ -75,10 +71,11 @@ def get_data():
...
@@ -75,10 +71,11 @@ def get_data():
return
train
,
test
return
train
,
test
def
get_config
()
:
if
__name__
==
'__main__'
:
logger
.
auto_set_dir
()
logger
.
auto_set_dir
()
dataset_train
,
dataset_test
=
get_data
()
dataset_train
,
dataset_test
=
get_data
()
return
TrainConfig
(
config
=
TrainConfig
(
model
=
Model
(),
model
=
Model
(),
dataflow
=
dataset_train
,
dataflow
=
dataset_train
,
callbacks
=
[
callbacks
=
[
...
@@ -89,14 +86,4 @@ def get_config():
...
@@ -89,14 +86,4 @@ def get_config():
],
],
max_epoch
=
100
,
max_epoch
=
100
,
)
)
if
__name__
==
'__main__'
:
parser
=
argparse
.
ArgumentParser
()
parser
.
add_argument
(
'--gpu'
,
help
=
'comma separated list of GPU(s) to use.'
)
args
=
parser
.
parse_args
()
if
args
.
gpu
:
os
.
environ
[
'CUDA_VISIBLE_DEVICES'
]
=
args
.
gpu
config
=
get_config
()
launch_train_with_config
(
config
,
SimpleTrainer
())
launch_train_with_config
(
config
,
SimpleTrainer
())
examples/basics/mnist-visualizations.py
View file @
180a3461
...
@@ -2,17 +2,13 @@
...
@@ -2,17 +2,13 @@
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
# File: mnist-visualizations.py
# File: mnist-visualizations.py
import
os
import
argparse
"""
"""
MNIST ConvNet example
with weights/activations visualization.
The same MNIST ConvNet example, but
with weights/activations visualization.
"""
"""
import
tensorflow
as
tf
from
tensorpack
import
*
from
tensorpack
import
*
from
tensorpack.dataflow
import
dataset
from
tensorpack.dataflow
import
dataset
import
tensorflow
as
tf
IMAGE_SIZE
=
28
IMAGE_SIZE
=
28
...
@@ -124,12 +120,11 @@ def get_data():
...
@@ -124,12 +120,11 @@ def get_data():
return
train
,
test
return
train
,
test
def
get_config
():
if
__name__
==
'__main__'
:
logger
.
auto_set_dir
()
logger
.
auto_set_dir
()
dataset_train
,
dataset_test
=
get_data
()
dataset_train
,
dataset_test
=
get_data
()
return
TrainConfig
(
config
=
TrainConfig
(
model
=
Model
(),
model
=
Model
(),
dataflow
=
dataset_train
,
dataflow
=
dataset_train
,
callbacks
=
[
callbacks
=
[
...
@@ -141,16 +136,4 @@ def get_config():
...
@@ -141,16 +136,4 @@ def get_config():
max_epoch
=
100
,
max_epoch
=
100
,
)
)
if
__name__
==
'__main__'
:
parser
=
argparse
.
ArgumentParser
()
parser
.
add_argument
(
'--gpu'
,
help
=
'comma separated list of GPU(s) to use.'
)
parser
.
add_argument
(
'--load'
,
help
=
'load model'
)
args
=
parser
.
parse_args
()
if
args
.
gpu
:
os
.
environ
[
'CUDA_VISIBLE_DEVICES'
]
=
args
.
gpu
config
=
get_config
()
if
args
.
load
:
config
.
session_init
=
SaverRestore
(
args
.
load
)
launch_train_with_config
(
config
,
SimpleTrainer
())
launch_train_with_config
(
config
,
SimpleTrainer
())
examples/basics/svhn-digit-convnet.py
View file @
180a3461
...
@@ -16,8 +16,7 @@ import tensorflow as tf
...
@@ -16,8 +16,7 @@ import tensorflow as tf
A very small SVHN convnet model (only 0.8m parameters).
A very small SVHN convnet model (only 0.8m parameters).
About 2.3
%
validation error after 70 epochs. 2.15
%
after 150 epochs.
About 2.3
%
validation error after 70 epochs. 2.15
%
after 150 epochs.
Each epoch iterates over the whole training set (4721 iterations).
Each epoch iterates over the whole training set (4721 iterations), and takes about 24s on a P100.
Speed is about 43 it/s on TitanX.
"""
"""
...
@@ -76,9 +75,6 @@ def get_data():
...
@@ -76,9 +75,6 @@ def get_data():
imgaug
.
Resize
((
40
,
40
)),
imgaug
.
Resize
((
40
,
40
)),
imgaug
.
Brightness
(
30
),
imgaug
.
Brightness
(
30
),
imgaug
.
Contrast
((
0.5
,
1.5
)),
imgaug
.
Contrast
((
0.5
,
1.5
)),
imgaug
.
GaussianDeform
(
# this is slow. only use it when you have lots of cpus
[(
0.2
,
0.2
),
(
0.2
,
0.8
),
(
0.8
,
0.8
),
(
0.8
,
0.2
)],
(
40
,
40
),
0.2
,
3
),
]
]
data_train
=
AugmentImageComponent
(
data_train
,
augmentors
)
data_train
=
AugmentImageComponent
(
data_train
,
augmentors
)
data_train
=
BatchData
(
data_train
,
128
)
data_train
=
BatchData
(
data_train
,
128
)
...
...
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