Keras Recurrent Layers 解析

Neil Zhu,ID Not_GOD,University AI 创始人 & Chief Scientist,致力于推进世界人工智能化进程。制定并实施 UAI 中长期增长战略和目标,带领团队快速成长为人工智能领域最专业的力量。
作为行业领导者,他和UAI一起在2014年创建了TASA(中国最早的人工智能社团), DL Center(深度学习知识中心全球价值网络),AI growth(行业智库培训)等,为中国的人工智能人才建设输送了大量的血液和养分。此外,他还参与或者举办过各类国际性的人工智能峰会和活动,产生了巨大的影响力,书写了60万字的人工智能精品技术内容,生产翻译了全球第一本深度学习入门书《神经网络与深度学习》,生产的内容被大量的专业垂直公众号和媒体转载与连载。曾经受邀为国内顶尖大学制定人工智能学习规划和教授人工智能前沿课程,均受学生和老师好评。

GRU

keras.layers.recurrent.GRU(input_dim, output_dim=128, init='glorot_uniform', inner_init='orthogonal', activation='sigmoid', inner_activation='hard_sigmoid', weights=None, truncate_gradient=-1, return_sequences=False)

Gated Recurrent Unit - Cho et al. 2014.

  • 输入形状:3D 张量:(nb_samples, timesteps, input_dim).
  • 输出形状:
  • 如果 return_sequences:3D 张量形如:(nb_samples, timesteps, output_dim).
  • 否则:2D 张量形如:(nb_samples, output_dim).
  • 参数:
  • input_dim:输入的维数
  • output_dim:内部投影的维数和最终输出的维数
  • init:权重初始函数。可以是任何已经存在的函数(str),或者是一个 Theano 的函数(参见:初始化)
  • inner_init:对内部元件的权重初始化函数
  • activation:激活函数。可以是任何已经存在的函数(str),或者是一个 Theano 的函数(参见:初始化)
  • inner_activation:内部元件的激活函数
  • weights:numpy 数组的列表用以设置初始权重。这个列表应该有 9 个元素
  • truncate_gradient:BPTT 的截断时间步。参见:Theano scan
  • return_sequences:Boolean。是否返回输出序列的最后一个,或者返回全部序列。
  • References:
  • On the Properties of Neural Machine Translation: Encoder–Decoder Approaches
  • Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling

LSTM

keras.layers.recurrent.LSTM(input_dim, output_dim=128, init='glorot_uniform', inner_init='orthogonal', forget_bias_init='one', activation='tanh', inner_activation='hard_sigmoid', weights=None, truncate_gradient=-1, return_sequences=False)

Long Short-Term Memory unit - Hochreiter et al. 1997

  • 输入形状:3D 张量:(nb_samples, timesteps, input_dim).
  • 输出形状:
  • 如果 return_sequences:3D 张量形如:(nb_samples, timesteps, output_dim).
  • 否则:2D 张量形如:(nb_samples, output_dim).
  • 参数:
  • input_dim:输入的维数
  • output_dim:内部投影的维数和最终输出的维数
  • init:权重初始函数。可以是任何已经存在的函数(str),或者是一个 Theano 的函数(参见:初始化)
  • inner_init:对内部元件的权重初始化函数
  • forget_bias_init:用作遗忘门的偏差初的始函数。Jozefowicz 等人推荐使用 1 来初始化
  • activation:激活函数。可以是任何已经存在的函数(str),或者是一个 Theano 的函数(参见:初始化)
  • inner_activation:内部元件的激活函数
  • weights:numpy 数组的列表用以设置初始权重。这个列表应该有 9 个元素
  • truncate_gradient:BPTT 的截断时间步。参见:Theano scan
  • return_sequences:Boolean。是否返回输出序列的最后一个,或者返回全部序列。
  • References:
  • Long short-term memory
  • Learning to forget: Continual prediction with LSTM
  • Supervised sequence labelling with recurrent neural networks

JZS1, JZS2, JZS3

keras.layers.recurrent.JZS1(input_dim, output_dim=128, init='glorot_uniform', inner_init='orthogonal', activation='tanh', inner_activation='sigmoid', weights=None, truncate_gradient=-1, return_sequences=False)```
全连接的 RNN 其中输出被重回输入。不是特别有用,仅供参考。
* 输入形状:3D 张量:`(nb_samples, timesteps, input_dim)`.
* 输出形状:
 * 如果 `return_sequences`:3D 张量形如:`(nb_samples, timesteps, output_dim)`.
 * 否则:2D 张量形如:`(nb_samples, output_dim)`.
* 参数:
 * input_dim
 * output_dim
 * init:权重初始函数。可以是任何已经存在的函数(str),或者是一个 Theano 的函数(参见:[初始化](http://keras.io/initializations/))
 * inner_init:内部元件的初始化的函数
 * activation:激活函数。可以是任何已经存在的函数(str),或者是一个 Theano 的函数(参见:[初始化](http://keras.io/activations/))
 * weights:numpy 数组的列表用以设置初始权重。这个列表应该有 3 个元素,形如:`[(input_dim, output_dim), (output_di,, output_dim), (output_dim, )]`
 * truncate_gradient:BPTT 的截断时间步。参见:[Theano scan](http://deeplearning.net/software/theano/library/scan.html)
 * return_sequences:Boolean。是否返回输出序列的最后一个,或者返回全部序列。
* 参考文献:
 [An Empirical Exploration of Recurrent Network Architectures](http://www.jmlr.org/proceedings/papers/v37/jozefowicz15.pdf)
---
# SimpleDeepRNN

keras.layers.recurrent.SimpleDeepRNN(input_dim, output_dim, depth=3, init='glorot_uniform', inner_init='orthogonal', activation='sigmoid', inner_activation='hard_sigmoid', weights=None, truncate_gradient=-1, return_sequences=False)

全连接的 RNN 其中多个时间步的输出重回输入中(使用 depth 参数来控制步数)。

output = activation( W.x_t + b + inner_activation(U_1.h_tm1) + inner_activation(U_2.h_tm2) + ... )

也不是常用的模型,仅供参考。
* 输入形状:3D 张量:`(nb_samples, timesteps, input_dim)`.
* 输出形状:
 * 如果 `return_sequences`:3D 张量形如:`(nb_samples, timesteps, output_dim)`.
 * 否则:2D 张量形如:`(nb_samples, output_dim)`.
* 参数:
 * input_dim
 * output_dim
 * init:权重初始函数。可以是任何已经存在的函数(str),或者是一个 Theano 的函数(参见:[初始化](http://keras.io/initializations/))
 * inner_init:对内部元件的权重初始化函数
 * activation:激活函数。可以是任何已经存在的函数(str),或者是一个 Theano 的函数(参见:[初始化](http://keras.io/activations/))
 * inner_activation:内部元件的激活函数
 * weights:numpy 数组的列表用以设置初始权重。这个列表应该有 3 个元素,形如:`[(input_dim, output_dim), (output_di,, output_dim), (output_dim, )]`
 * truncate_gradient:BPTT 的截断时间步。参见:[Theano scan](http://deeplearning.net/software/theano/library/scan.html)
 * return_sequences:Boolean。是否返回输出序列的最后一个,或者返回全部序列。

你可能感兴趣的:(Keras Recurrent Layers 解析)