Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
models
提交
a9a43991
M
models
项目概览
PaddlePaddle
/
models
1 年多 前同步成功
通知
222
Star
6828
Fork
2962
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
602
列表
看板
标记
里程碑
合并请求
255
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
models
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
602
Issue
602
列表
看板
标记
里程碑
合并请求
255
合并请求
255
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
a9a43991
编写于
10月 23, 2017
作者:
C
Cao Ying
提交者:
GitHub
10月 23, 2017
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #395 from ranqiu92/ltr
Update README.md of LTR.
上级
7631f3b4
1da20727
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
19 addition
and
11 deletion
+19
-11
ltr/README.md
ltr/README.md
+9
-5
ltr/index.html
ltr/index.html
+9
-5
ltr/run_ranknet.sh
ltr/run_ranknet.sh
+1
-1
未找到文件。
ltr/README.md
浏览文件 @
a9a43991
...
...
@@ -54,7 +54,7 @@ bash ./run_lambdarank.sh
例如调用接口
```
bash
```
python
pairwise_train_dataset
=
functools
.
partial
(
paddle
.
dataset
.
mq2007
.
train
,
format
=
"pairwise"
)
for
label
,
left_doc
,
right_doc
in
pairwise_train_dataset
():
...
...
...
@@ -104,7 +104,7 @@ $$\lambda _{i,j}=\frac{\partial C}{\partial s_{i}} = \frac{1}{2}(1-S_{i,j})-\fra
由于Pairwise中的网络结构是左右对称,可定义一半网络结构,另一半共享网络参数。在PaddlePaddle中允许网络结构中共享连接,具有相同名字的参数将会共享参数。使用PaddlePaddle实现RankNet排序模型,定义网络结构的示例代码如下:
```
bash
```
python
import
paddle.v2
as
paddle
def
half_ranknet
(
name_prefix
,
input_dim
):
...
...
@@ -149,8 +149,8 @@ def ranknet(input_dim):
RankNet的训练只需要运行命令:
```
python
run
.
/
run_ranknet
.
sh
```
bash
bash
./run_ranknet.sh
```
将会自动下载数据,训练RankNet模型,并将每个轮次的模型参数存储下来。
...
...
@@ -276,7 +276,7 @@ def lambda_rank(input_dim):
训练LambdaRank模型只需要运行命令:
```
python
```
bash
bash ./run_lambdarank.sh
```
...
...
@@ -344,6 +344,10 @@ feeding = {"label":0,
LTR在实际生活中有着广泛的应用。排序模型构造方法一般可划分为PointWise方法,Pairwise方法,Listwise方法,本例以LETOR的mq2007数据为例子,阐述了Pairwise的经典方法RankNet和Listwise方法中的LambdaRank,展示如何使用PaddlePaddle框架构造对应的排序模型结构,并提供了自定义数据类型样例。PaddlePaddle提供了灵活的编程接口,并可以使用一套代码运行在单机单GPU和多机分布式多GPU下实现LTR类型任务。
## 注意事项
本例作为LTR的演示示例,所采用的网络规模较小,在应用中须结合实际情况进行设置。本例实验数据中的特征向量为
**查询-文档对**
的联合特征,当使用查询和文档的独立特征时,可参考
[
DSSM
](
https://github.com/PaddlePaddle/models/tree/develop/dssm
)
。
## 参考文献
1.
https://en.wikipedia.org/wiki/Learning_to_rank
...
...
ltr/index.html
浏览文件 @
a9a43991
...
...
@@ -96,7 +96,7 @@ bash ./run_lambdarank.sh
例如调用接口
```
bash
```
python
pairwise_train_dataset = functools.partial(paddle.dataset.mq2007.train, format="pairwise")
for label, left_doc, right_doc in pairwise_train_dataset():
...
...
...
@@ -146,7 +146,7 @@ $$\lambda _{i,j}=\frac{\partial C}{\partial s_{i}} = \frac{1}{2}(1-S_{i,j})-\fra
由于Pairwise中的网络结构是左右对称,可定义一半网络结构,另一半共享网络参数。在PaddlePaddle中允许网络结构中共享连接,具有相同名字的参数将会共享参数。使用PaddlePaddle实现RankNet排序模型,定义网络结构的示例代码如下:
```
bash
```
python
import paddle.v2 as paddle
def half_ranknet(name_prefix, input_dim):
...
...
@@ -191,8 +191,8 @@ def ranknet(input_dim):
RankNet的训练只需要运行命令:
```
python
run
./run_ranknet.sh
```
bash
bash
./run_ranknet.sh
```
将会自动下载数据,训练RankNet模型,并将每个轮次的模型参数存储下来。
...
...
@@ -318,7 +318,7 @@ def lambda_rank(input_dim):
训练LambdaRank模型只需要运行命令:
```
python
```
bash
bash ./run_lambdarank.sh
```
...
...
@@ -386,6 +386,10 @@ feeding = {"label":0,
LTR在实际生活中有着广泛的应用。排序模型构造方法一般可划分为PointWise方法,Pairwise方法,Listwise方法,本例以LETOR的mq2007数据为例子,阐述了Pairwise的经典方法RankNet和Listwise方法中的LambdaRank,展示如何使用PaddlePaddle框架构造对应的排序模型结构,并提供了自定义数据类型样例。PaddlePaddle提供了灵活的编程接口,并可以使用一套代码运行在单机单GPU和多机分布式多GPU下实现LTR类型任务。
## 注意事项
本例作为LTR的演示示例,所采用的网络规模较小,在应用中须结合实际情况进行设置。本例实验数据中的特征向量为**查询-文档对**的联合特征,当使用查询和文档的独立特征时,可参考[DSSM](https://github.com/PaddlePaddle/models/tree/develop/dssm)。
## 参考文献
1. https://en.wikipedia.org/wiki/Learning_to_rank
...
...
ltr/run_ranknet.sh
浏览文件 @
a9a43991
...
...
@@ -3,7 +3,7 @@
python ranknet.py
\
--run_type
=
"train"
\
--num_passes
=
10
\
2>&1 |
tee
rank
e
net_train.log
2>&1 |
tee
ranknet_train.log
python ranknet.py
\
--run_type
=
"infer"
\
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录