File tree Expand file tree Collapse file tree 1 file changed +11
-6
lines changed Expand file tree Collapse file tree 1 file changed +11
-6
lines changed Original file line number Diff line number Diff line change 9898:ref: `glossary_trainer_config `\ 的模型配置
9999------------------------------------------
100100
101- 我们选取单双层序列配置中的不同部分,来对比分析两者语义相同的原因。
102-
103- - 单层序列:过了一个很简单的recurrent_group。每一个时间步,当前的输入y和上一个时间步的输出rnn_state做了一个全链接。
101+ 本例配置了两个完全等价的全连接\ :ref: `glossary_RNN `\ 。对于单层序列模型的配置如下:
104102
105103.. literalinclude :: ../../../paddle/gserver/tests/sequence_rnn.conf
106104 :language: python
107105 :lines: 36-48
106+ :linenos:
108107
109- - 双层序列,外层memory是一个元素:
108+ 在该配置中,名称为 \ :code: ` rnn_state ` \ 的全连接层暂存到了 \ :ref: ` glossary_Memory ` \ 中。这个 \ :ref: ` glossary_Memory ` \ 变量 \ :code: ` mem ` \ 中可以保存到上一个 \ :ref: ` glossary_timestep ` \ 中的全连接层的输出。从而实现一个全连接的 \ :ref: ` glossary_RNN ` \ 。
110109
111- - 内层inner_step的recurrent_group和单层序列的几乎一样。除了boot_layer=outer_mem,表示将外层的outer_mem作为内层memory的初始状态。外层outer_step中,outer_mem是一个子句的最后一个向量,即整个双层group是将前一个子句的最后一个向量,作为下一个子句memory的初始状态。
112- - 从输入数据上看,单双层序列的句子是一样的,只是双层序列将其又做了子序列划分。因此双层序列的配置中,必须将前一个子句的最后一个元素,作为boot_layer传给下一个子句的memory,才能保证和单层序列的配置中“每一个时间步都用了上一个时间步的输出结果”一致。
110+ 而对于\ :ref: `glossary_双层RNN `\ 来说,等价的网络配置如下\:
113111
114112.. literalinclude :: ../../../paddle/gserver/tests/sequence_nest_rnn.conf
115113 :language: python
116114 :lines: 39-66
117115
116+ - 双层序列,外层memory是一个元素:
117+
118+ - 内层inner_step的recurrent_group和单层序列的几乎一样。除了boot_layer=outer_mem,表示将外层的outer_mem作为内层memory的初始状态。外层outer_step中,outer_mem是一个子句的最后一个向量,即整个双层group是将前一个子句的最后一个向量,作为下一个子句memory的初始状态。
119+ - 从输入数据上看,单双层序列的句子是一样的,只是双层序列将其又做了子序列划分。因此双层序列的配置中,必须将前一个子句的最后一个元素,作为boot_layer传给下一个子句的memory,才能保证和单层序列的配置中“每一个时间步都用了上一个时间步的输出结果”一致。
120+
121+
122+
118123- 双层序列,外层memory是单层序列:
119124
120125 - 由于外层每个时间步返回的是一个子句,这些子句的长度往往不等长。因此当外层有is_seq=True的memory时,内层是**无法直接使用**它的,即内层memory的boot_layer不能链接外层的这个memory。
You can’t perform that action at this time.
0 commit comments