码迷,mamicode.com
首页 > 其他好文 > 详细

使用 paddle来进行文本生成

时间:2017-10-18 10:00:10      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:sha   pull   docker   测试的   0.12   pytho   ras   简单介绍   业务   

(1) paddle 简单介绍

    paddle 是百度在2016年9月份开源的深度学习框架。

    就我最近体验的感受来说的它具有几大优点:

        1. 本身内嵌了许多和实际业务非常贴近的模型比如个性化推荐,情感分析,词向量,语义角色标注等模型还有更多实际已经内嵌了但是目前还没有出现在官方文档上的模型比如物体检测,文本生成,图像分类,ctr预估等等,可以快速应用到项目中去

        2. 就实际体验来看,训练的速度相比于调用keras,在同等数据集上和相同网络架构上要快上不少。当然也是因为keras本身也是基于在tensorflow或者theano上面的,二次调用的速度不如paddle直接调用底层迅速。

    缺点也有很多:

         1. 一开始的安装对新手极其的不友好,使用docker安装感觉这个开源框架走不长久,所幸这个问题已经解决。

         2. 目前很多的文档并不完善,也许百度系的工程师目前对这方面其实并不是很重视,新手教程看起来并非那么易懂。

    最后希望借由本文,可以让你快速上手paddle。

(2) 一分钟安装paddle

     2.1 docker 安装

         之前paddle的安装方式是使用docker安装,感觉非常的反人类。

         安装命令: docker pull paddlepaddle/paddle:latest

     2.2 pip 安装

         现在已经支持pip 安装了。对(OS: centos 7, ubuntu 16.04, macos 10.12, python: python 2.7.x) 可以直接使用

         pip install paddlepaddle 安装cpu版本。

         pip install paddlepaddle-gpu 安装gpu 版本。

         安装完以后,测试的代码

import paddle.v2 as paddle
x = paddle.layer.data(name=‘x‘, type=paddle.data_type.dense_vector(13))
y = paddle.layer.fc(input=x, size=1, param_attr=paddle.attr.Param(name="fc.w"))
params = paddle.parameters.create(y)
print params["fc.w"].shape

         当输出 [13,1],那么恭喜你,已经成功安装了paddle.  

     2.3 遇到的问题     

         当我在使用pip 安装方式安装了gpu版本的paddle以后,遇到了numpy 版本不兼容的问题。解决的办法是:在把本地的numpy卸载以后,我首先把安装的paddle卸载了,然后重新再安装了一遍paddle。这样在安装的过程当中可以借由paddle的安装过程来检测你系统的其他python包是否符合paddle需要的环境。其他类似的python包的问题,都可以借由这个办法帮忙解决。

(3) 使用paddle中的循环神经网络来生成文本

    3.1 背景简介

        首先paddle实际上已经内嵌了这个项目:https://github.com/PaddlePaddle/models/tree/develop/generate_sequence_by_rnn_lm

        文本生成有很多的应用,比如根据上文生成下一个词,递归下去可以生成整个句子,段落,篇章。目前主流生成文本的方式是使用rnn来生成文本。

        主要有两个原因:

            1: 因为RNN 是将一个结构反复使用,即使输入的文本很长,所需的network的参数都是一样的。

            2: 因为RNN 是共用一个结构的,共用参数的。可以用比较少的参数来训练模型。这样会比较难训练,但是一旦训练好以后,模型会比较难overfitting,效果也会比较好。

       对于RNN使用的这个结构,由于原生的RNN的这个结构本身无法解决长程依赖的问题,目前主要使用Lstm 和GRU来进行代替。但是具体到LSTM 和GRU,因为LSTM需要使用三个门结构也就是通常所说的遗忘门,更新门,输出门。而GRU的表现和LSTM类似,却只需要两个门结构。训练速度更快,对内存的占用更小,目前看起来使用GRU是更好的选择。

   3.2 项目实战

   

    

使用 paddle来进行文本生成

标签:sha   pull   docker   测试的   0.12   pytho   ras   简单介绍   业务   

原文地址:http://www.cnblogs.com/ModifyRong/p/7684499.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!