Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
机器未来
Paddle
提交
4a94f8a4
P
Paddle
项目概览
机器未来
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
4a94f8a4
编写于
3月 02, 2017
作者:
D
dangqingqing
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refine api training
上级
bca1fce6
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
147 addition
and
203 deletion
+147
-203
demo/semantic_role_labeling/api_train_v2.py
demo/semantic_role_labeling/api_train_v2.py
+143
-78
demo/semantic_role_labeling/model_v2.py
demo/semantic_role_labeling/model_v2.py
+0
-121
python/paddle/v2/dataset/__init__.py
python/paddle/v2/dataset/__init__.py
+1
-1
python/paddle/v2/dataset/conll05.py
python/paddle/v2/dataset/conll05.py
+3
-3
未找到文件。
demo/semantic_role_labeling/api_train_v2.py
浏览文件 @
4a94f8a4
import
sys
import
math
import
numpy
as
np
import
paddle.v2
as
paddle
from
model_v2
import
db_lstm
import
paddle.v2.dataset.conll05
as
conll05
UNK_IDX
=
0
word_dict_file
=
'./data/wordDict.txt'
label_dict_file
=
'./data/targetDict.txt'
predicate_file
=
'./data/verbDict.txt'
word_dict
=
dict
()
label_dict
=
dict
()
predicate_dict
=
dict
()
with
open
(
word_dict_file
,
'r'
)
as
f_word
,
\
open
(
label_dict_file
,
'r'
)
as
f_label
,
\
open
(
predicate_file
,
'r'
)
as
f_pre
:
for
i
,
line
in
enumerate
(
f_word
):
w
=
line
.
strip
()
word_dict
[
w
]
=
i
for
i
,
line
in
enumerate
(
f_label
):
w
=
line
.
strip
()
label_dict
[
w
]
=
i
for
i
,
line
in
enumerate
(
f_pre
):
w
=
line
.
strip
()
predicate_dict
[
w
]
=
i
word_dict_len
=
len
(
word_dict
)
label_dict_len
=
len
(
label_dict
)
pred_len
=
len
(
predicate_dict
)
def
train_reader
(
file_name
=
"data/feature"
):
def
reader
():
with
open
(
file_name
,
'r'
)
as
fdata
:
for
line
in
fdata
:
sentence
,
predicate
,
ctx_n2
,
ctx_n1
,
ctx_0
,
ctx_p1
,
ctx_p2
,
mark
,
label
=
\
line
.
strip
().
split
(
'
\t
'
)
words
=
sentence
.
split
()
sen_len
=
len
(
words
)
word_slot
=
[
word_dict
.
get
(
w
,
UNK_IDX
)
for
w
in
words
]
predicate_slot
=
[
predicate_dict
.
get
(
predicate
)]
*
sen_len
ctx_n2_slot
=
[
word_dict
.
get
(
ctx_n2
,
UNK_IDX
)]
*
sen_len
ctx_n1_slot
=
[
word_dict
.
get
(
ctx_n1
,
UNK_IDX
)]
*
sen_len
ctx_0_slot
=
[
word_dict
.
get
(
ctx_0
,
UNK_IDX
)]
*
sen_len
ctx_p1_slot
=
[
word_dict
.
get
(
ctx_p1
,
UNK_IDX
)]
*
sen_len
ctx_p2_slot
=
[
word_dict
.
get
(
ctx_p2
,
UNK_IDX
)]
*
sen_len
marks
=
mark
.
split
()
mark_slot
=
[
int
(
w
)
for
w
in
marks
]
label_list
=
label
.
split
()
label_slot
=
[
label_dict
.
get
(
w
)
for
w
in
label_list
]
yield
word_slot
,
ctx_n2_slot
,
ctx_n1_slot
,
\
ctx_0_slot
,
ctx_p1_slot
,
ctx_p2_slot
,
predicate_slot
,
mark_slot
,
label_slot
return
reader
def
db_lstm
():
word_dict
,
verb_dict
,
label_dict
=
conll05
.
get_dict
()
word_dict_len
=
len
(
word_dict
)
label_dict_len
=
len
(
label_dict
)
pred_len
=
len
(
verb_dict
)
print
'word_dict_len,'
,
word_dict_len
print
'label_dict_len,'
,
label_dict_len
print
'pred_len,'
,
pred_len
mark_dict_len
=
2
word_dim
=
32
mark_dim
=
5
hidden_dim
=
512
depth
=
8
#8 features
def
d_type
(
size
):
return
paddle
.
data_type
.
integer_value_sequence
(
size
)
word
=
paddle
.
layer
.
data
(
name
=
'word_data'
,
type
=
d_type
(
word_dict_len
))
predicate
=
paddle
.
layer
.
data
(
name
=
'verb_data'
,
type
=
d_type
(
pred_len
))
ctx_n2
=
paddle
.
layer
.
data
(
name
=
'ctx_n2_data'
,
type
=
d_type
(
word_dict_len
))
ctx_n1
=
paddle
.
layer
.
data
(
name
=
'ctx_n1_data'
,
type
=
d_type
(
word_dict_len
))
ctx_0
=
paddle
.
layer
.
data
(
name
=
'ctx_0_data'
,
type
=
d_type
(
word_dict_len
))
ctx_p1
=
paddle
.
layer
.
data
(
name
=
'ctx_p1_data'
,
type
=
d_type
(
word_dict_len
))
ctx_p2
=
paddle
.
layer
.
data
(
name
=
'ctx_p2_data'
,
type
=
d_type
(
word_dict_len
))
mark
=
paddle
.
layer
.
data
(
name
=
'mark_data'
,
type
=
d_type
(
mark_dict_len
))
target
=
paddle
.
layer
.
data
(
name
=
'target'
,
type
=
d_type
(
label_dict_len
))
default_std
=
1
/
math
.
sqrt
(
hidden_dim
)
/
3.0
emb_para
=
paddle
.
attr
.
Param
(
name
=
'emb'
,
initial_std
=
0.
,
learning_rate
=
0.
)
std_0
=
paddle
.
attr
.
Param
(
initial_std
=
0.
)
std_default
=
paddle
.
attr
.
Param
(
initial_std
=
default_std
)
predicate_embedding
=
paddle
.
layer
.
embedding
(
size
=
word_dim
,
input
=
predicate
,
param_attr
=
paddle
.
attr
.
Param
(
name
=
'vemb'
,
initial_std
=
default_std
))
mark_embedding
=
paddle
.
layer
.
embedding
(
size
=
mark_dim
,
input
=
mark
,
param_attr
=
std_0
)
word_input
=
[
word
,
ctx_n2
,
ctx_n1
,
ctx_0
,
ctx_p1
,
ctx_p2
]
emb_layers
=
[
paddle
.
layer
.
embedding
(
size
=
word_dim
,
input
=
x
,
param_attr
=
emb_para
)
for
x
in
word_input
]
emb_layers
.
append
(
predicate_embedding
)
emb_layers
.
append
(
mark_embedding
)
hidden_0
=
paddle
.
layer
.
mixed
(
size
=
hidden_dim
,
bias_attr
=
std_default
,
input
=
[
paddle
.
layer
.
full_matrix_projection
(
input
=
emb
,
param_attr
=
std_default
)
for
emb
in
emb_layers
])
mix_hidden_lr
=
1e-3
lstm_para_attr
=
paddle
.
attr
.
Param
(
initial_std
=
0.0
,
learning_rate
=
1.0
)
hidden_para_attr
=
paddle
.
attr
.
Param
(
initial_std
=
default_std
,
learning_rate
=
mix_hidden_lr
)
lstm_0
=
paddle
.
layer
.
lstmemory
(
input
=
hidden_0
,
act
=
paddle
.
activation
.
Relu
(),
gate_act
=
paddle
.
activation
.
Sigmoid
(),
state_act
=
paddle
.
activation
.
Sigmoid
(),
bias_attr
=
std_0
,
param_attr
=
lstm_para_attr
)
#stack L-LSTM and R-LSTM with direct edges
input_tmp
=
[
hidden_0
,
lstm_0
]
for
i
in
range
(
1
,
depth
):
mix_hidden
=
paddle
.
layer
.
mixed
(
size
=
hidden_dim
,
bias_attr
=
std_default
,
input
=
[
paddle
.
layer
.
full_matrix_projection
(
input
=
input_tmp
[
0
],
param_attr
=
hidden_para_attr
),
paddle
.
layer
.
full_matrix_projection
(
input
=
input_tmp
[
1
],
param_attr
=
lstm_para_attr
)
])
lstm
=
paddle
.
layer
.
lstmemory
(
input
=
mix_hidden
,
act
=
paddle
.
activation
.
Relu
(),
gate_act
=
paddle
.
activation
.
Sigmoid
(),
state_act
=
paddle
.
activation
.
Sigmoid
(),
reverse
=
((
i
%
2
)
==
1
),
bias_attr
=
std_0
,
param_attr
=
lstm_para_attr
)
input_tmp
=
[
mix_hidden
,
lstm
]
feature_out
=
paddle
.
layer
.
mixed
(
size
=
label_dict_len
,
bias_attr
=
std_default
,
input
=
[
paddle
.
layer
.
full_matrix_projection
(
input
=
input_tmp
[
0
],
param_attr
=
hidden_para_attr
),
paddle
.
layer
.
full_matrix_projection
(
input
=
input_tmp
[
1
],
param_attr
=
lstm_para_attr
)
],
)
crf_cost
=
paddle
.
layer
.
crf
(
size
=
label_dict_len
,
input
=
feature_out
,
label
=
target
,
param_attr
=
paddle
.
attr
.
Param
(
name
=
'crfw'
,
initial_std
=
default_std
,
learning_rate
=
mix_hidden_lr
))
crf_dec
=
paddle
.
layer
.
crf_decoding
(
name
=
'crf_dec_l'
,
size
=
label_dict_len
,
input
=
feature_out
,
label
=
target
,
param_attr
=
paddle
.
attr
.
Param
(
name
=
'crfw'
))
return
crf_cost
,
crf_dec
def
load_parameter
(
file_name
,
h
,
w
):
with
open
(
file_name
,
'rb'
)
as
f
:
f
.
read
(
16
)
# skip header
for float type
.
f
.
read
(
16
)
# skip header.
return
np
.
fromfile
(
f
,
dtype
=
np
.
float32
).
reshape
(
h
,
w
)
...
...
@@ -71,44 +144,36 @@ def main():
paddle
.
init
(
use_gpu
=
False
,
trainer_count
=
1
)
# define network topology
crf_cost
,
crf_dec
=
db_lstm
(
word_dict_len
,
label_dict_len
,
pred_len
)
crf_cost
,
crf_dec
=
db_lstm
()
# create parameters
parameters
=
paddle
.
parameters
.
create
([
crf_cost
,
crf_dec
])
optimizer
=
paddle
.
optimizer
.
Momentum
(
momentum
=
0.01
,
learning_rate
=
2e-2
)
# create optimizer
optimizer
=
paddle
.
optimizer
.
Momentum
(
momentum
=
0
,
learning_rate
=
2e-2
,
regularization
=
paddle
.
optimizer
.
L2Regularization
(
rate
=
8e-4
),
model_average
=
paddle
.
optimizer
.
ModelAverage
(
average_window
=
0.5
,
max_average_window
=
10000
),
)
def
event_handler
(
event
):
if
isinstance
(
event
,
paddle
.
event
.
EndIteration
):
if
event
.
batch_id
%
100
==
0
:
print
"Pass %d, Batch %d, Cost %f, %s"
%
(
event
.
pass_id
,
event
.
batch_id
,
event
.
cost
,
event
.
metrics
)
else
:
pass
trainer
=
paddle
.
trainer
.
SGD
(
cost
=
crf_cost
,
parameters
=
parameters
,
update_equation
=
optimizer
)
parameters
.
set
(
'emb'
,
load_parameter
(
conll05
.
get_embedding
(),
44068
,
32
))
parameters
.
set
(
'emb'
,
load_parameter
(
"data/emb"
,
44068
,
32
))
reader_dict
=
{
'word_data'
:
0
,
'ctx_n2_data'
:
1
,
'ctx_n1_data'
:
2
,
'ctx_0_data'
:
3
,
'ctx_p1_data'
:
4
,
'ctx_p2_data'
:
5
,
'verb_data'
:
6
,
'mark_data'
:
7
,
'target'
:
8
,
}
trn_reader
=
paddle
.
reader
.
batched
(
paddle
.
reader
.
shuffle
(
train_reader
(),
buf_size
=
8192
),
batch_size
=
10
)
conll05
.
test
,
buf_size
=
8192
),
batch_size
=
10
)
trainer
.
train
(
reader
=
trn_reader
,
event_handler
=
event_handler
,
num_passes
=
10000
,
reader_dict
=
reader_dict
)
reader
=
trn_reader
,
event_handler
=
event_handler
,
num_passes
=
10000
)
if
__name__
==
'__main__'
:
...
...
demo/semantic_role_labeling/model_v2.py
已删除
100644 → 0
浏览文件 @
bca1fce6
import
math
import
paddle.v2
as
paddle
def
db_lstm
(
word_dict_len
,
label_dict_len
,
pred_len
):
mark_dict_len
=
2
word_dim
=
32
mark_dim
=
5
hidden_dim
=
512
depth
=
8
#8 features
def
d_type
(
size
):
return
paddle
.
data_type
.
integer_value_sequence
(
size
)
word
=
paddle
.
layer
.
data
(
name
=
'word_data'
,
type
=
d_type
(
word_dict_len
))
predicate
=
paddle
.
layer
.
data
(
name
=
'verb_data'
,
type
=
d_type
(
pred_len
))
ctx_n2
=
paddle
.
layer
.
data
(
name
=
'ctx_n2_data'
,
type
=
d_type
(
word_dict_len
))
ctx_n1
=
paddle
.
layer
.
data
(
name
=
'ctx_n1_data'
,
type
=
d_type
(
word_dict_len
))
ctx_0
=
paddle
.
layer
.
data
(
name
=
'ctx_0_data'
,
type
=
d_type
(
word_dict_len
))
ctx_p1
=
paddle
.
layer
.
data
(
name
=
'ctx_p1_data'
,
type
=
d_type
(
word_dict_len
))
ctx_p2
=
paddle
.
layer
.
data
(
name
=
'ctx_p2_data'
,
type
=
d_type
(
word_dict_len
))
mark
=
paddle
.
layer
.
data
(
name
=
'mark_data'
,
type
=
d_type
(
mark_dict_len
))
target
=
paddle
.
layer
.
data
(
name
=
'target'
,
type
=
d_type
(
label_dict_len
))
default_std
=
1
/
math
.
sqrt
(
hidden_dim
)
/
3.0
emb_para
=
paddle
.
attr
.
Param
(
name
=
'emb'
,
initial_std
=
0.
,
learning_rate
=
0.
)
std_0
=
paddle
.
attr
.
Param
(
initial_std
=
0.
)
std_default
=
paddle
.
attr
.
Param
(
initial_std
=
default_std
)
predicate_embedding
=
paddle
.
layer
.
embedding
(
size
=
word_dim
,
input
=
predicate
,
param_attr
=
paddle
.
attr
.
Param
(
name
=
'vemb'
,
initial_std
=
default_std
))
mark_embedding
=
paddle
.
layer
.
embedding
(
size
=
mark_dim
,
input
=
mark
,
param_attr
=
std_0
)
word_input
=
[
word
,
ctx_n2
,
ctx_n1
,
ctx_0
,
ctx_p1
,
ctx_p2
]
emb_layers
=
[
paddle
.
layer
.
embedding
(
size
=
word_dim
,
input
=
x
,
param_attr
=
emb_para
)
for
x
in
word_input
]
emb_layers
.
append
(
predicate_embedding
)
emb_layers
.
append
(
mark_embedding
)
hidden_0
=
paddle
.
layer
.
mixed
(
size
=
hidden_dim
,
bias_attr
=
std_default
,
input
=
[
paddle
.
layer
.
full_matrix_projection
(
input
=
emb
,
param_attr
=
std_default
)
for
emb
in
emb_layers
])
mix_hidden_lr
=
1e-3
lstm_para_attr
=
paddle
.
attr
.
Param
(
initial_std
=
0.0
,
learning_rate
=
1.0
)
hidden_para_attr
=
paddle
.
attr
.
Param
(
initial_std
=
default_std
,
learning_rate
=
mix_hidden_lr
)
lstm_0
=
paddle
.
layer
.
lstmemory
(
input
=
hidden_0
,
act
=
paddle
.
activation
.
Relu
(),
gate_act
=
paddle
.
activation
.
Sigmoid
(),
state_act
=
paddle
.
activation
.
Sigmoid
(),
bias_attr
=
std_0
,
param_attr
=
lstm_para_attr
)
#stack L-LSTM and R-LSTM with direct edges
input_tmp
=
[
hidden_0
,
lstm_0
]
for
i
in
range
(
1
,
depth
):
mix_hidden
=
paddle
.
layer
.
mixed
(
size
=
hidden_dim
,
bias_attr
=
std_default
,
input
=
[
paddle
.
layer
.
full_matrix_projection
(
input
=
input_tmp
[
0
],
param_attr
=
hidden_para_attr
),
paddle
.
layer
.
full_matrix_projection
(
input
=
input_tmp
[
1
],
param_attr
=
lstm_para_attr
)
])
lstm
=
paddle
.
layer
.
lstmemory
(
input
=
mix_hidden
,
act
=
paddle
.
activation
.
Relu
(),
gate_act
=
paddle
.
activation
.
Sigmoid
(),
state_act
=
paddle
.
activation
.
Sigmoid
(),
reverse
=
((
i
%
2
)
==
1
),
bias_attr
=
std_0
,
param_attr
=
lstm_para_attr
)
input_tmp
=
[
mix_hidden
,
lstm
]
feature_out
=
paddle
.
layer
.
mixed
(
size
=
label_dict_len
,
bias_attr
=
std_default
,
input
=
[
paddle
.
layer
.
full_matrix_projection
(
input
=
input_tmp
[
0
],
param_attr
=
hidden_para_attr
),
paddle
.
layer
.
full_matrix_projection
(
input
=
input_tmp
[
1
],
param_attr
=
lstm_para_attr
)
],
)
crf_cost
=
paddle
.
layer
.
crf
(
size
=
label_dict_len
,
input
=
feature_out
,
label
=
target
,
param_attr
=
paddle
.
attr
.
Param
(
name
=
'crfw'
,
initial_std
=
default_std
,
learning_rate
=
mix_hidden_lr
))
crf_dec
=
paddle
.
layer
.
crf_decoding
(
name
=
'crf_dec_l'
,
size
=
label_dict_len
,
input
=
feature_out
,
label
=
target
,
param_attr
=
paddle
.
attr
.
Param
(
name
=
'crfw'
))
return
crf_cost
,
crf_dec
python/paddle/v2/dataset/__init__.py
浏览文件 @
4a94f8a4
...
...
@@ -14,4 +14,4 @@
import
mnist
__all__
=
[
'mnist'
]
__all__
=
[
'mnist'
,
'cifar'
,
'imdb'
,
'conll05'
,
'imikolov'
,
'movielens'
]
python/paddle/v2/dataset/conll05.py
浏览文件 @
4a94f8a4
...
...
@@ -160,7 +160,6 @@ def reader_creator(corpus_reader,
ctx_p2
=
'eos'
word_idx
=
[
word_dict
.
get
(
w
,
UNK_IDX
)
for
w
in
sentence
]
pred_idx
=
[
predicate_dict
.
get
(
predicate
)]
*
sen_len
ctx_n2_idx
=
[
word_dict
.
get
(
ctx_n2
,
UNK_IDX
)]
*
sen_len
ctx_n1_idx
=
[
word_dict
.
get
(
ctx_n1
,
UNK_IDX
)]
*
sen_len
...
...
@@ -168,10 +167,11 @@ def reader_creator(corpus_reader,
ctx_p1_idx
=
[
word_dict
.
get
(
ctx_p1
,
UNK_IDX
)]
*
sen_len
ctx_p2_idx
=
[
word_dict
.
get
(
ctx_p2
,
UNK_IDX
)]
*
sen_len
pred_idx
=
[
predicate_dict
.
get
(
predicate
)]
*
sen_len
label_idx
=
[
label_dict
.
get
(
w
)
for
w
in
labels
]
yield
word_idx
,
pred_idx
,
ctx_n2_idx
,
ctx_n1_idx
,
\
ctx_0_idx
,
ctx_p1_idx
,
ctx_p2_idx
,
mark
,
label_idx
yield
word_idx
,
ctx_n2_idx
,
ctx_n1_idx
,
\
ctx_0_idx
,
ctx_p1_idx
,
ctx_p2_idx
,
pred_idx
,
mark
,
label_idx
return
reader
()
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录