From aace9ef49a1dd397c4a6f5ea8501a6a25177b9f2 Mon Sep 17 00:00:00 2001 From: hedaoyuan Date: Wed, 8 Mar 2017 17:49:54 +0800 Subject: [PATCH] Fix README.md for python code --- understand_sentiment/README.md | 26 +++++++++++++------------- understand_sentiment/index.html | 26 +++++++++++++------------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/understand_sentiment/README.md b/understand_sentiment/README.md index 3e437f2..fecb7a4 100644 --- a/understand_sentiment/README.md +++ b/understand_sentiment/README.md @@ -108,14 +108,14 @@ aclImdb ``` Paddle在`dataset/imdb.py`中提实现了imdb数据集的自动下载和读取,并提供了读取字典、训练数据、测试数据等API。 -``` +```python import sys import paddle.v2 as paddle ``` ## 配置模型 在该示例中,我们实现了两种文本分类算法,分别基于上文所述的[文本卷积神经网络](#文本卷积神经网络(CNN))和[栈式双向LSTM](#栈式双向LSTM(Stacked Bidirectional LSTM))。 ### 文本卷积神经网络 -``` +```python def convolution_net(input_dim, class_dim=2, emb_dim=128, @@ -136,7 +136,7 @@ def convolution_net(input_dim, ``` 网络的输入`input_dim`表示的是词典的大小,`class_dim`表示类别数。这里,我们使用[`sequence_conv_pool`](https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/trainer_config_helpers/networks.py) API实现了卷积和池化操作。 ### 栈式双向LSTM -``` +```python def stacked_lstm_net(input_dim, class_dim=2, emb_dim=128, @@ -205,7 +205,7 @@ def stacked_lstm_net(input_dim, ``` 网络的输入`stacked_num`表示的是LSTM的层数,需要是奇数,确保最高层LSTM正向。Paddle里面是通过一个fc和一个lstmemory来实现基于LSTM的循环神经网络。 ## 训练模型 -``` +```python if __name__ == '__main__': # init paddle.init(use_gpu=False) @@ -213,14 +213,14 @@ if __name__ == '__main__': 启动paddle程序,use_gpu=False表示用CPU训练,如果系统支持GPU也可以修改成True使用GPU训练。 ### 训练数据 使用Paddle提供的数据集`dataset.imdb`中的API来读取训练数据。 -``` +```python print 'load dictionary...' word_dict = paddle.dataset.imdb.word_dict() dict_dim = len(word_dict) class_dim = 2 ``` 加载数据字典,这里通过`word_dict()`API可以直接构造字典。`class_dim`是指样本类别数,该示例中样本只有正负两类。 -``` +```python train_reader = paddle.batch( paddle.reader.shuffle( lambda: paddle.dataset.imdb.train(word_dict), buf_size=1000), @@ -230,12 +230,12 @@ if __name__ == '__main__': batch_size=100) ``` 这里,`dataset.imdb.train()`和`dataset.imdb.test()`分别是`dataset.imdb`中的训练数据和测试数据API。`train_reader`在训练时使用,意义是将读取的训练数据进行shuffle后,组成一个batch数据。同理,`test_reader`是在测试的时候使用,将读取的测试数据组成一个batch。 -``` +```python feeding={'word': 0, 'label': 1} ``` `feeding`用来指定`train_reader`和`test_reader`返回的数据与模型配置中data_layer的对应关系。这里表示reader返回的第0列数据对应`word`层,第1列数据对应`label`层。 ### 构造模型 -``` +```python # Please choose the way to build the network # by uncommenting the corresponding line. cost = convolution_net(dict_dim, class_dim=class_dim) @@ -243,13 +243,13 @@ if __name__ == '__main__': ``` 该示例中默认使用`convolution_net`网络,如果使用`stacked_lstm_net`网络,注释相应的行即可。其中cost是网络的优化目标,同时cost包含了整个网络的拓扑信息。 ### 网络参数 -``` +```python # create parameters parameters = paddle.parameters.create(cost) ``` 根据网络的拓扑构造网络参数。这里parameters是整个网络的参数集。 ### 优化算法 -``` +```python # create optimizer adam_optimizer = paddle.optimizer.Adam( learning_rate=2e-3, @@ -259,7 +259,7 @@ if __name__ == '__main__': Paddle中提供了一系列优化算法的API,这里使用Adam优化算法。 ### 训练 可以通过`paddle.trainer.SGD`构造一个sgd trainer,并调用`trainer.train`来训练模型。 -``` +```python # End batch and end pass event handler def event_handler(event): if isinstance(event, paddle.event.EndIteration): @@ -274,7 +274,7 @@ Paddle中提供了一系列优化算法的API,这里使用Adam优化算法。 print "\nTest with Pass %d, %s" % (event.pass_id, result.metrics) ``` 可以通过给train函数传递一个`event_handler`来获取每个batch和每个pass结束的状态。比如构造如下一个`event_handler`可以在每100个batch结束后输出cost和error;在每个pass结束后调用`trainer.test`计算一遍测试集并获得当前模型在测试集上的error。 -``` +```python # create trainer trainer = paddle.trainer.SGD(cost=cost, parameters=parameters, @@ -287,7 +287,7 @@ Paddle中提供了一系列优化算法的API,这里使用Adam优化算法。 num_passes=2) ``` 程序运行之后的输出如下。 -``` +```text Pass 0, Batch 0, Cost 0.693721, {'classification_error_evaluator': 0.5546875} ................................................................................................... Pass 0, Batch 100, Cost 0.294321, {'classification_error_evaluator': 0.1015625} diff --git a/understand_sentiment/index.html b/understand_sentiment/index.html index ced0f25..7662665 100644 --- a/understand_sentiment/index.html +++ b/understand_sentiment/index.html @@ -150,14 +150,14 @@ aclImdb ``` Paddle在`dataset/imdb.py`中提实现了imdb数据集的自动下载和读取,并提供了读取字典、训练数据、测试数据等API。 -``` +```python import sys import paddle.v2 as paddle ``` ## 配置模型 在该示例中,我们实现了两种文本分类算法,分别基于上文所述的[文本卷积神经网络](#文本卷积神经网络(CNN))和[栈式双向LSTM](#栈式双向LSTM(Stacked Bidirectional LSTM))。 ### 文本卷积神经网络 -``` +```python def convolution_net(input_dim, class_dim=2, emb_dim=128, @@ -178,7 +178,7 @@ def convolution_net(input_dim, ``` 网络的输入`input_dim`表示的是词典的大小,`class_dim`表示类别数。这里,我们使用[`sequence_conv_pool`](https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/trainer_config_helpers/networks.py) API实现了卷积和池化操作。 ### 栈式双向LSTM -``` +```python def stacked_lstm_net(input_dim, class_dim=2, emb_dim=128, @@ -247,7 +247,7 @@ def stacked_lstm_net(input_dim, ``` 网络的输入`stacked_num`表示的是LSTM的层数,需要是奇数,确保最高层LSTM正向。Paddle里面是通过一个fc和一个lstmemory来实现基于LSTM的循环神经网络。 ## 训练模型 -``` +```python if __name__ == '__main__': # init paddle.init(use_gpu=False) @@ -255,14 +255,14 @@ if __name__ == '__main__': 启动paddle程序,use_gpu=False表示用CPU训练,如果系统支持GPU也可以修改成True使用GPU训练。 ### 训练数据 使用Paddle提供的数据集`dataset.imdb`中的API来读取训练数据。 -``` +```python print 'load dictionary...' word_dict = paddle.dataset.imdb.word_dict() dict_dim = len(word_dict) class_dim = 2 ``` 加载数据字典,这里通过`word_dict()`API可以直接构造字典。`class_dim`是指样本类别数,该示例中样本只有正负两类。 -``` +```python train_reader = paddle.batch( paddle.reader.shuffle( lambda: paddle.dataset.imdb.train(word_dict), buf_size=1000), @@ -272,12 +272,12 @@ if __name__ == '__main__': batch_size=100) ``` 这里,`dataset.imdb.train()`和`dataset.imdb.test()`分别是`dataset.imdb`中的训练数据和测试数据API。`train_reader`在训练时使用,意义是将读取的训练数据进行shuffle后,组成一个batch数据。同理,`test_reader`是在测试的时候使用,将读取的测试数据组成一个batch。 -``` +```python feeding={'word': 0, 'label': 1} ``` `feeding`用来指定`train_reader`和`test_reader`返回的数据与模型配置中data_layer的对应关系。这里表示reader返回的第0列数据对应`word`层,第1列数据对应`label`层。 ### 构造模型 -``` +```python # Please choose the way to build the network # by uncommenting the corresponding line. cost = convolution_net(dict_dim, class_dim=class_dim) @@ -285,13 +285,13 @@ if __name__ == '__main__': ``` 该示例中默认使用`convolution_net`网络,如果使用`stacked_lstm_net`网络,注释相应的行即可。其中cost是网络的优化目标,同时cost包含了整个网络的拓扑信息。 ### 网络参数 -``` +```python # create parameters parameters = paddle.parameters.create(cost) ``` 根据网络的拓扑构造网络参数。这里parameters是整个网络的参数集。 ### 优化算法 -``` +```python # create optimizer adam_optimizer = paddle.optimizer.Adam( learning_rate=2e-3, @@ -301,7 +301,7 @@ if __name__ == '__main__': Paddle中提供了一系列优化算法的API,这里使用Adam优化算法。 ### 训练 可以通过`paddle.trainer.SGD`构造一个sgd trainer,并调用`trainer.train`来训练模型。 -``` +```python # End batch and end pass event handler def event_handler(event): if isinstance(event, paddle.event.EndIteration): @@ -316,7 +316,7 @@ Paddle中提供了一系列优化算法的API,这里使用Adam优化算法。 print "\nTest with Pass %d, %s" % (event.pass_id, result.metrics) ``` 可以通过给train函数传递一个`event_handler`来获取每个batch和每个pass结束的状态。比如构造如下一个`event_handler`可以在每100个batch结束后输出cost和error;在每个pass结束后调用`trainer.test`计算一遍测试集并获得当前模型在测试集上的error。 -``` +```python # create trainer trainer = paddle.trainer.SGD(cost=cost, parameters=parameters, @@ -329,7 +329,7 @@ Paddle中提供了一系列优化算法的API,这里使用Adam优化算法。 num_passes=2) ``` 程序运行之后的输出如下。 -``` +```text Pass 0, Batch 0, Cost 0.693721, {'classification_error_evaluator': 0.5546875} ................................................................................................... Pass 0, Batch 100, Cost 0.294321, {'classification_error_evaluator': 0.1015625} -- GitLab