Keras构建RNN
Tensorflow中实现的模型
目前在Tensorflow中已经实现了3种内置的RNN模型:
tf.keras.layers.SimpleRNN
:使用全连接,并将上一层的输出(而非状态)作为下一层的输入。tf.keras.layers.GRU
tf.keras.layers.LSTM
RNN层参数
单次输出/多次输出
默认情况下,RNN层只有一个输出,对应最后一个时间步,因而输出形状应该为(batch_size,units)
。
当然对应另一种结构,亦可以实现每一个时间步一个输出,这样一来输出的形状就应该为(batch_size, timesteps, units)
。只需要设置参数return_sequences=True
。
状态返回
RNN也可以返回其最终的状态,这个状态可以用来继续执行,或者用来初始化另一个RNN层,只需要设置参数return_state=True
。需要注意LSTM
会返回两个张量,而GRU
只会返回一个。
output, state_h, state_c = layers.LSTM(64, return_state=True, name='encoder')(encoder_embedded) # 获取状态
encoder_state = [state_h, state_c]
decoder_output = layers.LSTM(64, name='decoder')(decoder_embedded, initial_state=encoder_state) # 使用状态来创建新的层
自定义化
对于RNN模型的自定义可以通过将自定义的单元(RNN cell)包装进tf.keras.layers.RNN
来实现,cell中具体要实现那些方法见其API文档。
参考
Last updated
Was this helpful?