Keras中LSTM使用过程中的几个易混点

现在dl学习的过程已经越来越简单的了,尽管很多时候真的只是调用API即可,但遇到需要定制的需求,这时候就需要清晰理解各个注意点,这里记录下LSTM API使用中的几处笔记。

1、LSTMCell类和LSTM类的区别

解答:LSTMCell类是对LSTM单个计算单元的完整封装,里面包含了各个计算步骤的详细过程,在LSTM层中用作实际计算单元。而LSTM类是抽象类RNN的子类,通过实例化LSTMCell来完成LSTM的计算。简单来说,LSTMCell类是LSTM的“心”,而LSTM类是LSTM的“壳”(比喻不一定恰当)。

 

2、LSTM中的return_sequences和return_state的区别?

解答:return_sequence返回每个时间步上的隐状态(hidden state),return_state返回最后一个时间步上的隐状态和细胞状态(hidden state和cell state)。

y = LSTM(units=self.rnn_units)(x) 
Tensor("lstm_1/TensorArrayReadV3:0", shape=(?, 128), dtype=float32)

y = LSTM(units=self.rnn_units, return_sequences=True)(x) 
Tensor("lstm_2/transpose_2:0", shape=(?, ?, 128), dtype=float32) 

y = LSTM(units=self.rnn_units, return_state=True)(x) 
[<tf.Tensor 'lstm_3/TensorArrayReadV3:0' shape=(?, 128) dtype=float32>, <tf.Tensor 'lstm_3/while/Exit_2:0' shape=(?, 128) dtype=float32>, <tf.Tensor 'lstm_3/while/Exit_3:0' shape=(?, 128) dtype=float32>] 

y = LSTM(units=self.rnn_units, return_sequences=True, return_state=True)(x) 
[<tf.Tensor 'lstm_4/transpose_2:0' shape=(?, ?, 128) dtype=float32>, <tf.Tensor 'lstm_4/while/Exit_2:0' shape=(?, 128) dtype=float32>, <tf.Tensor 'lstm_4/while/Exit_3:0' shape=(?, 128) dtype=float32>]

 

3、LSTM中activation和recurrent_activation的区别?

解答:recurrent_activation是针对三个门机制(遗忘门、输入门、输出门)的激活函数,而activation是针对输入信息(默认tanh)和当前隐状态输出(默认tanh)的激活函数。

 

4、LSTMCell类和LSTM类分别如何使用?

RNN(LSTMCell(32))

LSTM(32)

这2者等价

 

5、LSTM(32)调用关系的简单分析

解答:

step1:实例化LSTMCell()和调用执行。

step2:根据各个参数确定output_shape大小(比如return_state)

step3:调用tf(假定后端使用tf)后端K.rnn()

step4:后端tf中调用control_flow_ops.while_loop(位于control_flow_ops.py文件中)

下面最后一个调用关系比较复杂,暂还没看懂。

 

6、keras使用过程中,activation等参数接受字符串值,keras是如何实现真正调用到相应激活函数的?

解答:在activations.py中调用globals()函数,获取到当前py模块中全局变量映射,其中各个激活函数的名字和激活函数本身存在kv的映射关系。直接get激活函数名称字符串就能得到激活函数本身。这其实是一种“反射”机制。

 

更多学习笔记可以关注我的微信公众号「kelly学挖掘」,欢迎交流。

-- 未完待续 --

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值