hierarchical-layer.html 11.6 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>支持双层序列作为输入的Layer &#8212; PaddlePaddle  documentation</title>
    
    <link rel="stylesheet" href="../../_static/classic.css" type="text/css" />
    <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
    
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '../../',
        VERSION:     '',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>
    <script type="text/javascript" src="../../_static/jquery.js"></script>
    <script type="text/javascript" src="../../_static/underscore.js"></script>
    <script type="text/javascript" src="../../_static/doctools.js"></script>
    <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
    <link rel="index" title="Index" href="../../genindex.html" />
    <link rel="search" title="Search" href="../../search.html" />
    <link rel="top" title="PaddlePaddle  documentation" href="../../index.html" /> 
<script>
var _hmt = _hmt || [];
(function() {
  var hm = document.createElement("script");
  hm.src = "//hm.baidu.com/hm.js?b9a314ab40d04d805655aab1deee08ba";
  var s = document.getElementsByTagName("script")[0]; 
  s.parentNode.insertBefore(hm, s);
})();
</script>

  </head>
  <body role="document">
    <div class="related" role="navigation" aria-label="related navigation">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../../genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="nav-item nav-item-0"><a href="../../index.html">PaddlePaddle  documentation</a> &#187;</li> 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body" role="main">
            
  <div class="section" id="layer">
<span id="layer"></span><h1>支持双层序列作为输入的Layer<a class="headerlink" href="#layer" title="Permalink to this headline"></a></h1>
<div class="section" id="">
<span id="id1"></span><h2>概述<a class="headerlink" href="#" title="Permalink to this headline"></a></h2>
<p>在自然语言处理任务中,序列是一种常见的数据类型。一个独立的词语,可以看作是一个非序列输入,或者,我们称之为一个0层的序列;由词语构成的句子,是一个单层序列;若干个句子构成一个段落,是一个双层的序列。</p>
<p>双层序列是一个嵌套的序列,它的每一个元素,又是一个单层的序列。这是一种非常灵活的数据组织方式,帮助我们构造一些复杂的输入信息。</p>
<p>我们可以按照如下层次定义非序列,单层序列,以及双层序列。</p>
<ul class="simple">
<li>0层序列:一个独立的元素,类型可以是PaddlePaddle支持的任意输入数据类型</li>
<li>单层序列:排成一列的多个元素,每个元素是一个0层序列,元素之间的顺序是重要的输入信息</li>
<li>双层序列:排成一列的多个元素,每个元素是一个单层序列,称之为双层序列的一个子序列(subseq),subseq的每个元素是一个0层序列</li>
</ul>
<p>在 PaddlePaddle中,下面这些Layer能够接受双层序列作为输入,完成相应的计算。</p>
</div>
<div class="section" id="pooling-layer">
<span id="pooling-layer"></span><h2>pooling_layer<a class="headerlink" href="#pooling-layer" title="Permalink to this headline"></a></h2>
<p>pooling_layer的使用示例如下,详细见<a href = "../../../doc/ui/api/trainer_config_helpers/layers.html#pooling-layer">配置API</a></p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">seq_pool</span> <span class="o">=</span> <span class="n">pooling_layer</span><span class="p">(</span><span class="nb">input</span><span class="o">=</span><span class="n">layer</span><span class="p">,</span>
                         <span class="n">pooling_type</span><span class="o">=</span><span class="n">AvgPooling</span><span class="p">(),</span>
                         <span class="n">agg_level</span><span class="o">=</span><span class="n">AggregateLevel</span><span class="o">.</span><span class="n">EACH_SEQUENCE</span><span class="p">)</span>
</pre></div>
</div>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">pooling_type</span></code> 目前支持两种,分别是:MaxPooling()和AvgPooling()。</li>
<li><code class="docutils literal"><span class="pre">agg_level=AggregateLevel.TIMESTEP</span></code>时(默认值):<ul>
<li>作用:双层序列经过运算变成一个0层序列,或单层序列经过运算变成一个0层序列</li>
<li>输入:一个双层序列,或一个单层序列</li>
<li>输出:一个0层序列,即整个输入序列(单层或双层)的平均值(或最大值)</li>
</ul>
</li>
<li><code class="docutils literal"><span class="pre">agg_level=AggregateLevel.EACH_SEQUENCE</span></code>时:<ul>
<li>作用:一个双层序列经过运算变成一个单层序列</li>
<li>输入:必须是一个双层序列</li>
<li>输出:一个单层序列,序列的每个元素是原来双层序列每个subseq元素的平均值(或最大值)</li>
</ul>
</li>
</ul>
</div>
<div class="section" id="last-seq-first-seq">
<span id="last-seq-first-seq"></span><h2>last_seq 和 first_seq<a class="headerlink" href="#last-seq-first-seq" title="Permalink to this headline"></a></h2>
<p>last_seq的使用示例如下(first_seq类似),详细见<a href = "../../../doc/ui/api/trainer_config_helpers/layers.html#last-seq">配置API</a></p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">last</span> <span class="o">=</span> <span class="n">last_seq</span><span class="p">(</span><span class="nb">input</span><span class="o">=</span><span class="n">layer</span><span class="p">,</span>
                <span class="n">agg_level</span><span class="o">=</span><span class="n">AggregateLevel</span><span class="o">.</span><span class="n">EACH_SEQUENCE</span><span class="p">)</span>
</pre></div>
</div>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">agg_level=AggregateLevel.TIMESTEP</span></code>时(默认值):<ul>
<li>作用:一个双层序列经过运算变成一个0层序列,或一个单层序列经过运算变成一个0层序列</li>
<li>输入:一个双层序列或一个单层序列</li>
<li>输出:一个0层序列,即整个输入序列(双层或者单层)最后一个,或第一个元素。</li>
</ul>
</li>
<li><code class="docutils literal"><span class="pre">agg_level=AggregateLevel.EACH_SEQUENCE</span></code>时:<ul>
<li>作用:一个双层序列经过运算变成一个单层序列</li>
<li>输入:必须是一个双层序列</li>
<li>输出:一个单层序列,其中每个元素是双层序列中每个subseq最后一个(或第一个)元素。</li>
</ul>
</li>
</ul>
</div>
<div class="section" id="expand-layer">
<span id="expand-layer"></span><h2>expand_layer<a class="headerlink" href="#expand-layer" title="Permalink to this headline"></a></h2>
<p>expand_layer的使用示例如下,详细见<a href = "../../../doc/ui/api/trainer_config_helpers/layers.html#expand-layer">配置API</a></p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">expand</span> <span class="o">=</span> <span class="n">expand_layer</span><span class="p">(</span><span class="nb">input</span><span class="o">=</span><span class="n">layer1</span><span class="p">,</span>
                      <span class="n">expand_as</span><span class="o">=</span><span class="n">layer2</span><span class="p">,</span>
                      <span class="n">expand_level</span><span class="o">=</span><span class="n">ExpandLevel</span><span class="o">.</span><span class="n">FROM_TIMESTEP</span><span class="p">)</span>
</pre></div>
</div>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">expand_level=ExpandLevel.FROM_TIMESTEP</span></code>时(默认值):<ul>
<li>作用:一个0层序列经过运算扩展成一个单层序列,或者一个双层序列</li>
<li>输入:layer1必须是一个0层序列,是待扩展的数据;layer2可以是一个单层序列,或者是一个双层序列,提供扩展的长度信息</li>
<li>输出:一个单层序列,或一个双层序列,输出序列的类型(双层序列,或单层序列)和序列中含有元素的数目同 layer2一致。若输出是单层序列,单层序列的每个元素(0层序列),都是对layer1元素的拷贝;若输出是双层序列,双层序列每个subseq中每个元素(0层序列),都是对layer1元素的拷贝</li>
</ul>
</li>
<li><code class="docutils literal"><span class="pre">expand_level=ExpandLevel.FROM_SEQUENCE</span></code>时:<ul>
<li>作用:一个单层序列经过运算扩展成一个双层序列</li>
<li>输入:layer1必须是一个单层序列,是待扩展的数据;layer2必须是一个双层序列,提供扩展的长度信息</li>
<li>输出:一个双层序列,序列中含有元素的数目同layer2一致。要求单层序列含有元素的数目(0层序列),和双层序列含有subseq 的数目一致。单层序列第i个元素(0层序列),被扩展为一个单层序列,构成了输出双层序列的第i个subseq。</li>
</ul>
</li>
</ul>
</div>
</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
        <div class="sphinxsidebarwrapper">
  <h3><a href="../../index.html">Table Of Contents</a></h3>
  <ul>
<li><a class="reference internal" href="#">支持双层序列作为输入的Layer</a><ul>
<li><a class="reference internal" href="#">概述</a></li>
<li><a class="reference internal" href="#pooling-layer">pooling_layer</a></li>
<li><a class="reference internal" href="#last-seq-first-seq">last_seq 和 first_seq</a></li>
<li><a class="reference internal" href="#expand-layer">expand_layer</a></li>
</ul>
</li>
</ul>

  <div role="note" aria-label="source link">
    <h3>This Page</h3>
    <ul class="this-page-menu">
      <li><a href="../../_sources/algorithm/rnn/hierarchical-layer.txt"
            rel="nofollow">Show Source</a></li>
    </ul>
   </div>
<div id="searchbox" style="display: none" role="search">
  <h3>Quick search</h3>
    <form class="search" action="../../search.html" method="get">
      <div><input type="text" name="q" /></div>
      <div><input type="submit" value="Go" /></div>
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related" role="navigation" aria-label="related navigation">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../../genindex.html" title="General Index"
             >index</a></li>
        <li class="nav-item nav-item-0"><a href="../../index.html">PaddlePaddle  documentation</a> &#187;</li> 
      </ul>
    </div>
    <div class="footer" role="contentinfo">
        &#169; Copyright 2016, PaddlePaddle developers.
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.4.8.
    </div>
  </body>
</html>