Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Edaker
PaddleHub
提交
f96d96a2
P
PaddleHub
项目概览
Edaker
/
PaddleHub
与 Fork 源项目一致
Fork自
PaddlePaddle / PaddleHub
通知
4
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleHub
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f96d96a2
编写于
1月 16, 2019
作者:
W
wuzewu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add image finetune example
上级
65e1a0a8
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
118 addition
and
0 deletion
+118
-0
example/image-classification/dataset/README.md
example/image-classification/dataset/README.md
+0
-0
example/image-classification/finetune.sh
example/image-classification/finetune.sh
+36
-0
example/image-classification/retrain.py
example/image-classification/retrain.py
+82
-0
未找到文件。
example/image-classification/dataset/README.md
0 → 100644
浏览文件 @
f96d96a2
example/image-classification/finetune.sh
0 → 100644
浏览文件 @
f96d96a2
#!/bin/bash
set
-o
nounset
set
-o
errexit
script_path
=
$(
cd
`
dirname
$0
`
;
pwd
)
cd
$script_path
hub_module_path
=
hub_module_ResNet50
data_dir
=
dataset
batch_size
=
32
use_gpu
=
False
num_epochs
=
20
class_dim
=
2
learning_rate
=
0.001
while
getopts
"b:c:d:gh:l:n:"
options
do
case
"
$options
"
in
b
)
batch_size
=
$OPTARG
;;
c
)
class_dim
=
$OPTARG
;;
d
)
data_dir
=
$OPTARG
;;
g
)
use_gpu
=
True
;;
l
)
learning_rate
=
$OPTARG
;;
n
)
num_epochs
=
$OPTARG
;;
?
)
echo
"unknown options"
exit
1
;;
esac
done
python retrain.py
--batch_size
=
${
batch_size
}
--class_dim
=
${
class_dim
}
--data_dir
=
${
data_dir
}
--use_gpu
=
${
use_gpu
}
--hub_module_path
${
hub_module_path
}
--lr
${
learning_rate
}
--num_epochs
=
${
num_epochs
}
example/image-classification/retrain.py
0 → 100644
浏览文件 @
f96d96a2
#-*- coding:utf8 -*-
import
paddle
import
paddle.fluid
as
fluid
import
paddle_hub
as
hub
import
paddle_hub.module
as
module
import
sys
import
reader
import
argparse
import
functools
from
utility
import
add_arguments
,
print_arguments
parser
=
argparse
.
ArgumentParser
(
description
=
__doc__
)
add_arg
=
functools
.
partial
(
add_arguments
,
argparser
=
parser
)
# yapf: disable
add_arg
(
'hub_module_path'
,
str
,
"hub_module_ResNet50"
,
"the hub module path"
)
add_arg
(
'batch_size'
,
int
,
32
,
"Minibatch size."
)
add_arg
(
'use_gpu'
,
bool
,
True
,
"Whether to use GPU or not."
)
add_arg
(
'num_epochs'
,
int
,
20
,
"number of epochs."
)
add_arg
(
'class_dim'
,
int
,
2
,
"Class number."
)
add_arg
(
'image_shape'
,
str
,
"3,224,224"
,
"input image size"
)
add_arg
(
'lr'
,
float
,
0.1
,
"set learning rate."
)
add_arg
(
'data_dir'
,
str
,
"./dataset"
,
"The ImageNet dataset root dir."
)
# yapf: enable
def
retrain
(
modelpath
):
model
=
module
.
Module
(
module_dir
=
args
.
hub_module_path
)
feed_list
,
fetch_list
,
program
,
generator
=
model
(
sign_name
=
"feature_map"
,
trainable
=
False
)
test_program
=
program
.
clone
()
# get the dog cat dataset
train_reader
=
paddle
.
batch
(
reader
.
train
(
args
.
data_dir
),
batch_size
=
32
)
val_reader
=
paddle
.
batch
(
reader
.
val
(
args
.
data_dir
),
batch_size
=
32
)
with
fluid
.
program_guard
(
main_program
=
program
):
with
fluid
.
unique_name
.
guard
(
generator
):
img
=
feed_list
[
0
]
label
=
fluid
.
layers
.
data
(
name
=
"label"
,
shape
=
[
1
],
dtype
=
"int64"
)
feature_map
=
fetch_list
[
0
]
fc
=
fluid
.
layers
.
fc
(
input
=
feature_map
,
size
=
2
,
act
=
"softmax"
)
cost
=
fluid
.
layers
.
cross_entropy
(
input
=
fc
,
label
=
label
)
avg_cost
=
fluid
.
layers
.
mean
(
cost
)
acc
=
fluid
.
layers
.
accuracy
(
input
=
fc
,
label
=
label
)
# define the loss
optimizer
=
fluid
.
optimizer
.
Adam
(
learning_rate
=
0.001
)
optimizer
.
minimize
(
avg_cost
)
# running on gpu
place
=
fluid
.
CUDAPlace
(
0
)
feeder
=
fluid
.
DataFeeder
(
feed_list
=
[
img
,
label
],
place
=
place
)
exe
=
fluid
.
Executor
(
place
)
# init all param
exe
.
run
(
fluid
.
default_startup_program
())
step
=
0
sample_num
=
0
epochs
=
50
# start to train
for
i
in
range
(
epochs
):
for
batch
in
train_reader
():
cost
,
accuracy
=
exe
.
run
(
feed
=
feeder
.
feed
(
batch
),
fetch_list
=
[
avg_cost
.
name
,
acc
.
name
])
step
+=
1
print
(
"epoch %d and step %d: train cost is %.2f, train acc is %.2f%%"
%
(
i
,
step
,
cost
,
accuracy
*
100
))
for
iter
,
batch
in
enumerate
(
val_reader
()):
cost
,
accuracy
=
exe
.
run
(
feed
=
feeder
.
feed
(
batch
),
fetch_list
=
[
avg_cost
.
name
,
acc
.
name
])
print
(
"batch %d: val cost is %.2f, val acc is %.2f%%"
%
(
iter
,
cost
,
accuracy
*
100
))
if
__name__
==
"__main__"
:
args
=
parser
.
parse_args
()
print_arguments
(
args
)
retrain
(
sys
.
argv
[
1
])
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录