parent
452f3cc0e1
commit
44ae44da49
@ -0,0 +1,208 @@
|
||||
type: "nn"
|
||||
layers {
|
||||
name: "sentence_states"
|
||||
type: "data"
|
||||
size: 32
|
||||
active_type: ""
|
||||
}
|
||||
layers {
|
||||
name: "sentence_scores"
|
||||
type: "data"
|
||||
size: 1
|
||||
active_type: ""
|
||||
}
|
||||
layers {
|
||||
name: "__kmax_sequence_score_layer_0__"
|
||||
type: "kmax_seq_score"
|
||||
active_type: ""
|
||||
inputs {
|
||||
input_layer_name: "sentence_scores"
|
||||
}
|
||||
beam_size: 5
|
||||
}
|
||||
layers {
|
||||
name: "__sub_nested_seq_layer_0__"
|
||||
type: "sub_nested_seq"
|
||||
size: 32
|
||||
active_type: ""
|
||||
inputs {
|
||||
input_layer_name: "sentence_states"
|
||||
}
|
||||
inputs {
|
||||
input_layer_name: "__kmax_sequence_score_layer_0__"
|
||||
}
|
||||
}
|
||||
layers {
|
||||
name: "__fc_layer_0__"
|
||||
type: "fc"
|
||||
size: 1
|
||||
active_type: ""
|
||||
inputs {
|
||||
input_layer_name: "__sub_nested_seq_layer_0__"
|
||||
input_parameter_name: "___fc_layer_0__.w0"
|
||||
}
|
||||
bias_parameter_name: "___fc_layer_0__.wbias"
|
||||
}
|
||||
layers {
|
||||
name: "__kmax_sequence_score_layer_1__"
|
||||
type: "kmax_seq_score"
|
||||
active_type: ""
|
||||
inputs {
|
||||
input_layer_name: "sentence_scores"
|
||||
}
|
||||
beam_size: 5
|
||||
}
|
||||
layers {
|
||||
name: "__seq_slice_layer_0__"
|
||||
type: "seq_slice"
|
||||
size: 32
|
||||
active_type: ""
|
||||
inputs {
|
||||
input_layer_name: "__sub_nested_seq_layer_0__"
|
||||
}
|
||||
inputs {
|
||||
input_layer_name: "__kmax_sequence_score_layer_1__"
|
||||
}
|
||||
select_first: true
|
||||
}
|
||||
layers {
|
||||
name: "__fc_layer_1__"
|
||||
type: "fc"
|
||||
size: 1
|
||||
active_type: ""
|
||||
inputs {
|
||||
input_layer_name: "__seq_slice_layer_0__"
|
||||
input_parameter_name: "___fc_layer_1__.w0"
|
||||
}
|
||||
bias_parameter_name: "___fc_layer_1__.wbias"
|
||||
}
|
||||
layers {
|
||||
name: "__kmax_sequence_score_layer_2__"
|
||||
type: "kmax_seq_score"
|
||||
active_type: ""
|
||||
inputs {
|
||||
input_layer_name: "__fc_layer_1__"
|
||||
}
|
||||
beam_size: 5
|
||||
}
|
||||
layers {
|
||||
name: "sentences_ids"
|
||||
type: "data"
|
||||
size: 1
|
||||
active_type: ""
|
||||
}
|
||||
layers {
|
||||
name: "start_ids"
|
||||
type: "data"
|
||||
size: 1
|
||||
active_type: ""
|
||||
}
|
||||
layers {
|
||||
name: "end_ids"
|
||||
type: "data"
|
||||
size: 1
|
||||
active_type: ""
|
||||
}
|
||||
layers {
|
||||
name: "__cross_entropy_over_beam_0__"
|
||||
type: "cross_entropy_over_beam"
|
||||
active_type: ""
|
||||
inputs {
|
||||
input_layer_name: "sentence_scores"
|
||||
}
|
||||
inputs {
|
||||
input_layer_name: "__kmax_sequence_score_layer_0__"
|
||||
}
|
||||
inputs {
|
||||
input_layer_name: "__fc_layer_0__"
|
||||
}
|
||||
inputs {
|
||||
input_layer_name: "__kmax_sequence_score_layer_1__"
|
||||
}
|
||||
inputs {
|
||||
input_layer_name: "__fc_layer_1__"
|
||||
}
|
||||
inputs {
|
||||
input_layer_name: "__kmax_sequence_score_layer_2__"
|
||||
}
|
||||
inputs {
|
||||
input_layer_name: "sentences_ids"
|
||||
}
|
||||
inputs {
|
||||
input_layer_name: "start_ids"
|
||||
}
|
||||
inputs {
|
||||
input_layer_name: "end_ids"
|
||||
}
|
||||
coeff: 1.0
|
||||
}
|
||||
parameters {
|
||||
name: "___fc_layer_0__.w0"
|
||||
size: 32
|
||||
initial_mean: 0.0
|
||||
initial_std: 0.176776695297
|
||||
dims: 32
|
||||
dims: 1
|
||||
initial_strategy: 0
|
||||
initial_smart: true
|
||||
}
|
||||
parameters {
|
||||
name: "___fc_layer_0__.wbias"
|
||||
size: 1
|
||||
initial_mean: 0.0
|
||||
initial_std: 0.0
|
||||
dims: 1
|
||||
dims: 1
|
||||
initial_strategy: 0
|
||||
initial_smart: false
|
||||
}
|
||||
parameters {
|
||||
name: "___fc_layer_1__.w0"
|
||||
size: 32
|
||||
initial_mean: 0.0
|
||||
initial_std: 0.176776695297
|
||||
dims: 32
|
||||
dims: 1
|
||||
initial_strategy: 0
|
||||
initial_smart: true
|
||||
}
|
||||
parameters {
|
||||
name: "___fc_layer_1__.wbias"
|
||||
size: 1
|
||||
initial_mean: 0.0
|
||||
initial_std: 0.0
|
||||
dims: 1
|
||||
dims: 1
|
||||
initial_strategy: 0
|
||||
initial_smart: false
|
||||
}
|
||||
input_layer_names: "sentence_scores"
|
||||
input_layer_names: "sentence_states"
|
||||
input_layer_names: "sentences_ids"
|
||||
input_layer_names: "start_ids"
|
||||
input_layer_names: "end_ids"
|
||||
output_layer_names: "__cross_entropy_over_beam_0__"
|
||||
sub_models {
|
||||
name: "root"
|
||||
layer_names: "sentence_states"
|
||||
layer_names: "sentence_scores"
|
||||
layer_names: "__kmax_sequence_score_layer_0__"
|
||||
layer_names: "__sub_nested_seq_layer_0__"
|
||||
layer_names: "__fc_layer_0__"
|
||||
layer_names: "__kmax_sequence_score_layer_1__"
|
||||
layer_names: "__seq_slice_layer_0__"
|
||||
layer_names: "__fc_layer_1__"
|
||||
layer_names: "__kmax_sequence_score_layer_2__"
|
||||
layer_names: "sentences_ids"
|
||||
layer_names: "start_ids"
|
||||
layer_names: "end_ids"
|
||||
layer_names: "__cross_entropy_over_beam_0__"
|
||||
input_layer_names: "sentence_scores"
|
||||
input_layer_names: "sentence_states"
|
||||
input_layer_names: "sentences_ids"
|
||||
input_layer_names: "start_ids"
|
||||
input_layer_names: "end_ids"
|
||||
output_layer_names: "__cross_entropy_over_beam_0__"
|
||||
is_recurrent_layer_group: false
|
||||
}
|
||||
|
@ -0,0 +1,39 @@
|
||||
#!/usr/bin/env python
|
||||
#coding=utf-8
|
||||
|
||||
from paddle.trainer_config_helpers import *
|
||||
beam_size = 5
|
||||
|
||||
# the first beam expansion.
|
||||
sentence_states = data_layer(name="sentence_states", size=32)
|
||||
sentence_scores = data_layer(name="sentence_scores", size=1)
|
||||
topk_sentence_ids = kmax_sequence_score_layer(
|
||||
input=sentence_scores, beam_size=beam_size)
|
||||
|
||||
# the second beam expansion.
|
||||
topk_sen = sub_nested_seq_layer(
|
||||
input=sentence_states, selected_indices=topk_sentence_ids)
|
||||
start_pos_scores = fc_layer(input=topk_sen, size=1, act=LinearActivation())
|
||||
topk_start_pos_ids = kmax_sequence_score_layer(
|
||||
input=sentence_scores, beam_size=beam_size)
|
||||
|
||||
# the final beam expansion.
|
||||
topk_start_spans = seq_slice_layer(
|
||||
input=topk_sen, starts=topk_start_pos_ids, ends=None)
|
||||
end_pos_scores = fc_layer(
|
||||
input=topk_start_spans, size=1, act=LinearActivation())
|
||||
topk_end_pos_ids = kmax_sequence_score_layer(
|
||||
input=end_pos_scores, beam_size=beam_size)
|
||||
|
||||
# define the cost
|
||||
sentence_idx = data_layer(name="sentences_ids", size=1)
|
||||
start_idx = data_layer(name="start_ids", size=1)
|
||||
end_idx = data_layer(name="end_ids", size=1)
|
||||
cost = cross_entropy_over_beam(
|
||||
input=[
|
||||
sentence_scores, topk_sentence_ids, start_pos_scores,
|
||||
topk_start_pos_ids, end_pos_scores, topk_end_pos_ids
|
||||
],
|
||||
label=[sentence_idx, start_idx, end_idx])
|
||||
|
||||
outputs(cost)
|
Loading…
Reference in new issue