未验证 提交 3ceffb4a 编写于 作者: S Steffy-zxf 提交者: GitHub

Update matching task (#814)

上级 3c090720
......@@ -52,9 +52,9 @@ if __name__ == '__main__':
# Construct transfer learning network
# Use sequence-level output.
query = outputs["pooled_output"]
left = outputs['pooled_output_2']
right = outputs['pooled_output_3']
query = outputs["sequence_output"]
left = outputs['sequence_output_2']
right = outputs['sequence_output_3']
# Select fine-tune strategy
strategy = hub.AdamWeightDecayStrategy(
......
......@@ -48,9 +48,9 @@ if __name__ == '__main__':
# Construct transfer learning network.
# Use sequence-level output.
query = outputs["pooled_output"]
left = outputs['pooled_output_2']
right = outputs['pooled_output_3']
query = outputs["sequence_output"]
left = outputs['sequence_output_2']
right = outputs['sequence_output_3']
# Select fine-tune strategy.
strategy = hub.AdamWeightDecayStrategy()
......@@ -91,6 +91,6 @@ if __name__ == '__main__':
max_seq_len=args.max_seq_len,
label_list=dataset.get_labels(),
return_result=True,
accelerate_mode=False)
accelerate_mode=True)
for index, text in enumerate(text_pairs):
print("data: %s, prediction_label: %s" % (text, results[index]))
......@@ -3,7 +3,7 @@ CKPT_DIR="./ckpt_embedding_pairwise_matching"
python -u embedding_pairwise_matching.py \
--batch_size=128 \
--checkpoint_dir=${CKPT_DIR} \
--learning_rate=5e-2 \
--learning_rate=5e-3 \
--max_seq_len=128 \
--num_epoch=300 \
--num_epoch=100 \
--network=bow
......@@ -4,4 +4,4 @@ python -u embedding_pairwise_matching_predict.py \
--batch_size=1 \
--checkpoint_dir=${CKPT_DIR} \
--max_seq_len=128 \
--network=lstm
--network=bow
......@@ -88,12 +88,12 @@ if __name__ == '__main__':
# Prediction data sample.
text_pairs = [
[
"请问不是您的账户吗?", # query
"您好,请问您使用的邮箱类型是?" # title
"淘宝上怎么用信用卡分期付款", # query
"淘宝上怎么分期付款,没有信用卡", # title
],
[
"推荐个手机游戏", # query
"手机游戏推荐" # title
"山楂干怎么吃好吃?", # query
"山楂怎么做好吃", # title
]
]
......
......@@ -52,8 +52,8 @@ if __name__ == '__main__':
# Construct transfer learning network
# Use token-level output.
query = outputs["pooled_output"]
left = outputs['pooled_output_2']
query = outputs["sequence_output"]
left = outputs['sequence_output_2']
# Select fine-tune strategy
strategy = hub.AdamWeightDecayStrategy(
......
......@@ -48,8 +48,8 @@ if __name__ == '__main__':
# Construct transfer learning network
# Use token-level output.
query = outputs["pooled_output"]
left = outputs['pooled_output_2']
query = outputs["sequence_output"]
left = outputs['sequence_output_2']
# Select fine-tune strategy
strategy = hub.AdamWeightDecayStrategy()
......@@ -73,12 +73,12 @@ if __name__ == '__main__':
# Prediction data sample.
text_pairs = [
[
"小品《战狼故事》中,吴京突破重重障碍解救爱人,深情告白太感人;爱人", # query
"外文名:愛人;摘要:爱人,意思是:情人。;义项描述:日本语词汇;语言:日文;中文名:爱人;标签:文化;", # title
"淘宝上怎么用信用卡分期付款", # query
"淘宝上怎么分期付款,没有信用卡", # title
],
[
"儿子祝融被杀害,西天王大发雷霆,立即下令捉拿天庭三公主;儿子", # query
"摘要:《儿子》是曹国昌1983年创作的木雕,收藏于中国美术馆。;材质::木雕;作者::曹国昌;中文名:儿子;创作年代::1983年;义项描述:曹国昌木雕;标签:文化;", # title
"山楂干怎么吃好吃?", # query
"山楂怎么做好吃", # title
]
]
......@@ -88,6 +88,6 @@ if __name__ == '__main__':
max_seq_len=args.max_seq_len,
label_list=dataset.get_labels(),
return_result=True,
accelerate_mode=False)
accelerate_mode=True)
for index, text in enumerate(text_pairs):
print("data: %s, prediction_label: %s" % (text, results[index]))
......@@ -5,5 +5,5 @@ python -u embedding_pointwise_matching.py \
--checkpoint_dir=${CKPT_DIR} \
--learning_rate=5e-3 \
--max_seq_len=128 \
--num_epoch=300 \
--num_epoch=100 \
--network=bow
......@@ -106,32 +106,81 @@ class PairwiseTextMatchingTask(BaseTask):
% self.network)
query_feats, left_feats = net_func(query_unpad, left_unpad)
query_feats = fluid.layers.fc(
input=query_feats,
size=300,
param_attr=fluid.ParamAttr(
name="query_fc_w",
initializer=fluid.initializer.TruncatedNormal(scale=0.02),
),
bias_attr=fluid.ParamAttr(
name="query_fc_b",
initializer=fluid.initializer.Constant(0.),
),
act="tanh")
left_feats = fluid.layers.fc(
input=left_feats,
size=300,
param_attr=fluid.ParamAttr(
name="title_fc_w",
initializer=fluid.initializer.TruncatedNormal(scale=0.02),
),
bias_attr=fluid.ParamAttr(
name="title_fc_b",
initializer=fluid.initializer.Constant(0.),
),
act="tanh")
left_concat = fluid.layers.concat(
input=[query_feats, left_feats], axis=1)
query_feats, right_feats = net_func(query_unpad, right_unpad)
_, right_feats = net_func(query_unpad, right_unpad)
right_feats = fluid.layers.fc(
input=right_feats,
size=300,
param_attr=fluid.ParamAttr(
name="title_fc_w",
initializer=fluid.initializer.TruncatedNormal(scale=0.02),
),
bias_attr=fluid.ParamAttr(
name="title_fc_b",
initializer=fluid.initializer.Constant(0.),
),
act="tanh")
right_concat = fluid.layers.concat(
input=[query_feats, right_feats],
axis=1,
)
input=[query_feats, right_feats], axis=1)
else:
query_feats = fluid.layers.dropout(
x=self.query_feature,
dropout_prob=0.1,
dropout_implementation="upscale_in_train")
query_mean = fluid.layers.reduce_mean(query_feats, dim=1)
left_feats = fluid.layers.dropout(
x=self.left_feature,
dropout_prob=0.1,
dropout_implementation="upscale_in_train")
left_mean = fluid.layers.reduce_mean(left_feats, dim=1)
left_sub = fluid.layers.elementwise_sub(query_mean, left_mean)
left_sub = fluid.layers.abs(left_sub)
left_concat = fluid.layers.concat(
input=[query_feats, left_feats], axis=-1)
input=[query_mean, left_mean, left_sub], axis=-1)
right_feats = fluid.layers.dropout(
x=self.right_feature,
dropout_prob=0.1,
dropout_implementation="upscale_in_train")
right_mean = fluid.layers.reduce_mean(right_feats, dim=1)
right_sub = fluid.layers.elementwise_sub(query_mean, right_mean)
right_sub = fluid.layers.abs(right_sub)
right_concat = fluid.layers.concat(
input=[query_feats, right_feats],
input=[query_mean, right_mean, right_sub],
axis=-1,
)
......@@ -435,22 +484,91 @@ class PointwiseTextMatchingTask(BaseTask):
self.network)
query_feats, title_feats = net_func(query_unpad, title_unpad)
query_fc = fluid.layers.fc(
input=query_feats,
size=300,
param_attr=fluid.ParamAttr(
name="query_fc_w",
initializer=fluid.initializer.TruncatedNormal(scale=0.02),
),
bias_attr=fluid.ParamAttr(
name="query_fc_b",
initializer=fluid.initializer.Constant(0.),
),
act="tanh")
title_fc = fluid.layers.fc(
input=title_feats,
size=300,
param_attr=fluid.ParamAttr(
name="title_fc_w",
initializer=fluid.initializer.TruncatedNormal(scale=0.02),
),
bias_attr=fluid.ParamAttr(
name="title_fc_b",
initializer=fluid.initializer.Constant(0.),
),
act="tanh")
title_concat = fluid.layers.concat(
input=[query_feats, title_feats], axis=1)
input=[query_fc, title_fc], axis=1)
fc1 = fluid.layers.fc(
input=title_concat,
size=256,
param_attr=fluid.ParamAttr(
name="matching_fc1_w",
initializer=fluid.initializer.TruncatedNormal(scale=0.02),
),
bias_attr=fluid.ParamAttr(
name="matching_fc1_b",
initializer=fluid.initializer.Constant(0.),
),
act="tanh")
fc2 = fluid.layers.fc(
input=fc1,
size=128,
param_attr=fluid.ParamAttr(
name="matching_fc2_w",
initializer=fluid.initializer.TruncatedNormal(scale=0.02),
),
bias_attr=fluid.ParamAttr(
name="matching_fc2_b",
initializer=fluid.initializer.Constant(0.),
),
act="tanh")
projection = fluid.layers.fc(
input=fc2,
size=96,
param_attr=fluid.ParamAttr(
name="matching_fc3_w",
initializer=fluid.initializer.TruncatedNormal(scale=0.02),
),
bias_attr=fluid.ParamAttr(
name="matching_fc3_b",
initializer=fluid.initializer.Constant(0.),
),
act="tanh")
else:
query_feats = fluid.layers.dropout(
x=self.query_feature,
dropout_prob=0.1,
dropout_implementation="upscale_in_train")
query_mean = fluid.layers.reduce_mean(query_feats, dim=1)
title_feats = fluid.layers.dropout(
x=self.title_feature,
dropout_prob=0.1,
dropout_implementation="upscale_in_train")
title_concat = fluid.layers.concat(
input=[query_feats, title_feats], axis=-1)
title_mean = fluid.layers.reduce_mean(title_feats, dim=1)
sub = fluid.layers.elementwise_sub(query_mean, title_mean)
sub = fluid.layers.abs(sub)
projection = fluid.layers.concat(
input=[query_mean, title_mean, sub], axis=-1)
score = fluid.layers.fc(
input=title_concat,
input=projection,
size=2,
param_attr=fluid.ParamAttr(
name="matching_out_w",
......
......@@ -13,5 +13,5 @@
# See the License for the specific language governing permissions and
# limitations under the License.
""" PaddleHub version string """
hub_version = "1.8.0"
hub_version = "1.8.1"
module_proto_version = "1.0.0"
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册