11MovieLens数据集评分回归模型
22=========================
33
4- 这里我们在MovieLens数据集描述一种**余弦相似度回归**任务。
4+ 这里我们在MovieLens数据集描述一种 **余弦相似度回归 ** 任务。
55该示例将展示paddle如何进行词向量嵌入,处理相似度回归,针对文本
66的单词级别的卷积神经网络,以及paddle如何处理多种类型的输入。
77需要注意的是,该模型网络只是用于进行demo展示paddle如何工作,而
@@ -15,15 +15,15 @@ MovieLens数据集评分回归模型
1515```````
1616下载并解压数据集
1717''''''''''''''
18- 这里我们使用:ref: `demo_ml_dataset_en `。
18+ 这里我们使用 :ref: `demo_ml_dataset_en ` 。
1919要下载和解压数据集,只需要简单的运行下面的命令即可。
2020
2121.. code-block :: bash
2222
2323 cd demo/recommendation/data
2424 ./ml_data.sh
2525
26- :code: `demo/recommendation/data/ml-1m`的目录结构为:
26+ :code: `demo/recommendation/data/ml-1m ` 的目录结构为:
2727
2828.. code-block :: text
2929
@@ -35,10 +35,10 @@ MovieLens数据集评分回归模型
3535
3636 字段配置文件
3737''''''''''
38- **字段配置文件**用来具体说明数据集的字段和文件格式,
39- 例如,说明每个特征文件具体字段是**什么**类型。
38+ **字段配置文件 ** 用来具体说明数据集的字段和文件格式,
39+ 例如,说明每个特征文件具体字段是 **什么 ** 类型。
4040
41- ml-1m的字段配置文件在目录:code:`demo/recommendation/data/config.json`中。
41+ ml-1m的字段配置文件在目录 :code: `demo/recommendation/data/config.json ` 中。
4242其具体说明了字段类型和文件名称:
43431) 用户文件中有四种类型的字段\: 编号,性别,年龄和职业;
44442) 文件名称为"users.dat",文件的分隔符为"::"。
@@ -70,12 +70,12 @@ ml-1m的字段配置文件在目录:code:`demo/recommendation/data/config.json`
7070
7171在movielens 1m数据集中,电影和用户有许多的特征。
7272评分文件的每一行仅仅提供电影或用户的编号来代表相应的电影或用户。
73- 我们首先处理电影或用户的特征文件,然后用pickle命令将特征(**Meta **)对象存储为文件。
73+ 我们首先处理电影或用户的特征文件,然后用pickle命令将特征( **Meta ** )对象存储为文件。
7474
7575Meta配置文件
7676...........
7777
78- **Meta配置文件**用来具体描述**如何**解析数据集中的每一个字段。
78+ **Meta配置文件 ** 用来具体描述 **如何 ** 解析数据集中的每一个字段。
7979该文件可以从字段配置文件生成,或是手动编辑生成。文件的格式可以
8080为json或yaml格式。解析器能通过文件的扩展名自动识别文件的格式。
8181
@@ -124,14 +124,14 @@ Meta配置文件
124124Meta文件
125125''''''''
126126
127- 有了meta配置文件之后,我们可以生成**Meta文件**,该文件是python的pickle对象,
127+ 有了meta配置文件之后,我们可以生成 **Meta文件 ** ,该文件是python的pickle对象,
128128存储着电影或用户信息。可以运行下面的命令来生成。
129129
130130.. code-block :: bash
131131
132132 python meta_generator.py ml-1m meta.bin --config=meta_config.json
133133
134- meta文件:code: `meta.bin`的结构如下:
134+ meta文件 :code: `meta.bin ` 的结构如下:
135135
136136.. code-block :: text
137137
@@ -185,17 +185,17 @@ meta文件:code:`meta.bin`的结构如下:
185185 分割训练/测试文件
186186'''''''''''''''
187187
188- 我们将:code: `ml-1m/ratings.dat`文件分割为训练和测试文件。分割文件的方法是:对于每位用户,我们将评分分成两部分。
188+ 我们将 :code: `ml-1m/ratings.dat ` 文件分割为训练和测试文件。分割文件的方法是:对于每位用户,我们将评分分成两部分。
189189这样的话每位用户在测试文件中将与训练文件含有同样的信息。
190190
191- 用:code: `separate.py`来分离训练和测试文件。
191+ 用 :code: `separate.py ` 来分离训练和测试文件。
192192
193193.. code-block :: bash
194194
195195 python split.py ml-1m/ratings.dat --delimiter=" ::" --test_ratio=0.1
196196
197- 这样就会生成两个文件::code: `ml-1m/ratings.dat.train`和 :code:`ml-1m/ratings.data.test `。
198- 将他们移动到目录:code: `data `,然后进行随机打乱,再为paddle的训练过程提供文件列表。
197+ 这样就会生成两个文件::code: `ml-1m/ratings.dat.train ` 和 :code: `ml-1m/ratings.data.test ` 。
198+ 将他们移动到目录 :code: `data ` ,然后进行随机打乱,再为paddle的训练过程提供文件列表。
199199
200200.. code-block :: bash
201201
@@ -217,27 +217,27 @@ meta文件:code:`meta.bin`的结构如下:
217217 :align: center
218218 :alt: rec_regression_network
219219
220- 该示例的神经网络配置文件:code: `trainer_config.py`如下所示:
220+ 该示例的神经网络配置文件 :code: `trainer_config.py ` 如下所示:
221221
222222.. literalinclude :: ../../../demo/recommendation/trainer_config.py
223223 :language: python
224224 :lines: 15-
225225
226- 在文件:code: `trainer_config.py`中,我们仅仅是讲每个特征种类映射到一个特征向量中,以下
226+ 在文件 :code: `trainer_config.py ` 中,我们仅仅是讲每个特征种类映射到一个特征向量中,以下
227227展示了如何将每个特征映射到一个向量。
228228
229- * :code: `id `\: 仅仅是简单的嵌入,然后添加一个全连接层。
230- * :code: `embedding `\:
229+ * :code: `id ` \: 仅仅是简单的嵌入,然后添加一个全连接层。
230+ * :code: `embedding ` \:
231231 - 如果是序列,则先做嵌入,然后再做一次文本卷积网络操作,
232232 然后得到平均采样的结果
233233 - 如果不是序列,则先做嵌入,然后添加一个全连接层。
234- * :code: `one_host_dense `\:
234+ * :code: `one_host_dense ` \:
235235 - 仅仅是两个全连接层。
236236
237- 然后我们利用多输入的:code: `fc_layer`全连接层将电影的每个特征结合成一个电影特征,
237+ 然后我们利用多输入的:code: `fc_layer ` 全连接层将电影的每个特征结合成一个电影特征,
238238并且对用户的特征做同样的操作,也得到一个用户特征。然后我们求这两个特征的余弦相似度。
239239
240- 在这些网络中,我们用以下的一些:ref: `api_trainer_config`中的接口。
240+ 在这些网络中,我们用以下的一些:ref: `api_trainer_config ` 中的接口。
241241
242242* 数据层, :ref: `api_trainer_config_helpers_layers_data_layer `
243243* 全连接层, :ref: `api_trainer_config_helpers_layers_fc_layer `
@@ -246,7 +246,7 @@ meta文件:code:`meta.bin`的结构如下:
246246* 采样层, :ref: `api_trainer_config_helpers_layers_pooling_layer `
247247* 余弦相似度层, :ref: `api_trainer_config_helpers_layers_cos_sim `
248248* 文本卷积采样层, :ref: `api_trainer_config_helpers_network_text_conv_pool `
249- * 声明Python数据源, :ref: `api_trainer_config_helpers_data_sources `.
249+ * 声明Python数据源, :ref: `api_trainer_config_helpers_data_sources ` .
250250
251251数据提供脚本
252252'''''''''''
@@ -256,40 +256,40 @@ meta文件:code:`meta.bin`的结构如下:
256256 :lines: 15-
257257
258258数据提供脚本仅仅是读取meta.bin和评分文件,生成训练需要的样本。
259- 在脚本:code: `dataprovider.py`中,我们需要设置:
259+ 在脚本 :code: `dataprovider.py ` 中,我们需要设置:
260260
261261* obj.slots\: 特征的类型和维度。
262- * use_seq\: :code: `dataprovider.py`中的数据是否为序列模式。
263- * process\: 返回数据的每一条样本给:code:`paddle `.
262+ * use_seq\: :code: `dataprovider.py ` 中的数据是否为序列模式。
263+ * process\: 返回数据的每一条样本给 :code: `paddle ` .
264264
265- 数据提供脚本的细节文档可以参考:ref: `api_pydataprovider `.
265+ 数据提供脚本的细节文档可以参考 :ref: `api_pydataprovider ` .
266266
267267训练
268268````
269269
270270准备好数据,配置了网络,编写好数据提供脚本后,现在我们可以开始paddle训练了。
271271
272- 代码:code: `run.sh`如下:
272+ 代码 :code: `run.sh ` 如下:
273273
274274.. literalinclude :: ../../../demo/recommendation/run.sh
275275 :language: bash
276276 :lines: 16-
277277
278- 该脚本仅仅是开始一个paddle训练过程,将日志写入文件:code: `log.txt `,然后
278+ 该脚本仅仅是开始一个paddle训练过程,将日志写入文件 :code: `log.txt ` ,然后
279279打印在屏幕上。
280280
281- 脚本:code: `run.sh`中的每一行命令,请参考页面:ref: `cmd_line_index_en `。
281+ 脚本 :code: `run.sh ` 中的每一行命令,请参考页面 :ref: `cmd_line_index_en ` 。
282282这些参数的简短介绍如下:
283283
284284* config\: 告诉paddle哪个文件是神经网络的配置文件。
285- * save_dir\: 告诉paddle将模型保存在:code: `./output`中。
285+ * save_dir\: 告诉paddle将模型保存在: code:`./output ` 中。
286286* use_gpu\: 是否使用GPU,默认为不使用。
287287* trainer_count\: 一台机器上面的线程数量。
288288* test_all_data_in_one_period\: 每一个测试周期测试一次所有数据。否则,
289- 每个测试周期测试:code: `batch_size`批次的数据。
290- * log_period\: 在训练了:code: `log_period`批次后打印日志.
291- * dot_period\: 在每训练:code: `dot_period`个批次后打印一个:code: `. `.
292- * num_passes\: 训练至多:code: `num_passes`轮.
289+ 每个测试周期测试: code:`batch_size ` 批次的数据。
290+ * log_period\: 在训练了: code:`log_period ` 批次后打印日志.
291+ * dot_period\: 在每训练: code:`dot_period ` 个批次后打印一个 :code: `. ` .
292+ * num_passes\: 训练至多: code:`num_passes ` 轮.
293293
294294如果训练过程启动成功的话,输出应该类似如下:
295295
@@ -311,7 +311,7 @@ meta文件:code:`meta.bin`的结构如下:
311311 I0601 08:09:46.233438 10549 Util.cpp:209] copy trainer_config.py to ./output/model/pass-00000
312312 I0601 08:09:46.233541 10549 ParamUtil.cpp:147] fileName trainer_config.py
313313
314- 模型被保存在:code: `output/`目录中。你可以在任何时候用:code: `Ctrl-C`来停止训练。
314+ 模型被保存在 :code: `output/ ` 目录中。你可以在任何时候用 :code: `Ctrl-C ` 来停止训练。
315315
316316模型评估和预测
317317````````````
@@ -322,7 +322,7 @@ meta文件:code:`meta.bin`的结构如下:
322322
323323 ./evaluate.sh
324324
325- 你讲看到如下的信息 :
325+ 你将看到如下的信息 :
326326
327327.. code-block :: text
328328
@@ -344,4 +344,4 @@ meta文件:code:`meta.bin`的结构如下:
344344 Prediction Score is 2.56
345345 Input movie_id: 8
346346 Input user_id: 2
347- Prediction Score is 3.13
347+ Prediction Score is 3.13
0 commit comments