循环层
当数据中因果关系和顺序都十分重要时,就可以使用循环层来处理。循环层的使用会增加计算负荷。
循环层的内容较多也比较复杂,这里拣选几个常用有代表性的层来说明。
SimpleRNN
全连接的RNN(循环神经网络),所有输出都会被反馈到输入。构造方法为:
keras.layers.SimpleRNN(
units,
activation='tanh',
use_bias=True,
kernel_initializer='glorot_uniform',
recurrent_initializer='orthogonal',
bias_initializer='zeros',
kernel_regularizer=None,
recurrent_regularizer=None,
bias_regularizer=None,
activity_regularizer=None,
kernel_constraint=None,
bias_constraint=None,
dropout=0.0,
recurrent_dropout=0.0,
return_sequence=False,
return_state=False,
go_backwards=False,
stateful=False,
unroll=False)
其中部分参数的含义如下。
units
,输出空间的维度。activation
,要使用的激活函数,默认双曲正切(\(tan\ h\))。recurrent_constraint
,循环核心权值矩阵的约束函数。dropout
,单元的丢弃比例,用于输入的线性转换,取值范围为\([0, 1]\)。recurrent_dropout
,单元的丢弃比例,用于循环层的线性转换,取值范围为\([0, 1]\)。return_sequence
,指定返回序列中的最后一个输出还是全部序列。return_state
,指定除了输出以外时候还需要返回最后一个状态。go_backgwards
,设定为True,则向后处理输入序列并返回相反的序列。stateful
,设定为True,则批次中索引i处的每个样本的最后一个状态将用作下一批次中索引i样本的初始状态。unroll
,设定为True,则网络将展开,否则使用符号循环。展开可以加速RNN,但占用更多内存。
GRU
门限循环单元网络,构造参数基本与SimpleRNN
相同。
LSTM
长短期记忆网络层,构造参数与SimpleRNN
相同。
ConvLSTM2D
卷积LSTM,用途类似于LSTM,但输入变换和循环变换都是卷积的。