有人可以向我解释初始化keras lstm层时传递的激活和重复激活参数之间的区别吗?
根据我的理解,LSTM有4层。如果我没有将任何激活参数传递给LSTM构造函数,请解释每个层的默认激活函数是什么?
除了候选隐藏状态(g)和输出隐藏状态(c)之外,LSTM单元还具有称为输入,遗忘和输出门的3个门。
LSTMCell类中的构建方法包含调用这些激活的实现(https://github.com/keras-team/keras/blob/master/keras/layers/recurrent.py#L1892)。
recurrent_activation参数适用于输入,遗忘和输出门。此参数的默认值是hard-sigmoid函数。激活参数适用于候选隐藏状态和输出隐藏状态。此参数的默认值是双曲正切函数。
在code
从1932年开始
i = self.recurrent_activation(z0)
f = self.recurrent_activation(z1)
c = f * c_tm1 + i * self.activation(z2)
o = self.recurrent_activation(z3)
h = o * self.activation(c)
recurrent_activation用于激活输入/遗忘/输出门。
激活,如果是细胞状态和隐藏状态。
根据Andrew Ng在这个video1中的解释,三个门即更新,遗忘和输出门需要一个sigmoid类型的激活函数。因此keras文档中的激活指的是这些激活值。
更新候选者和输出所需的激活是tanh。因此,重复激活对应于Keras文档中的这些激活.RA-Recurrent Activation, Act.-Activations
我验证了你的问题,下面是我的结论: - 激活:tanh; - 经常性激活:sigmoid(keras中的默认hard_sigmoid);并且对于一个单元中的4个门: - i,f,o使用反复激活; - C并更新h使用激活;