mrk*_*mrk 0 python initializer lstm tensorflow recurrent-neural-network
我在 Tensorflow 中使用 LSTM 单元。
lstm_cell = tf.contrib.rnn.BasicLSTMCell(lstm_units)
Run Code Online (Sandbox Code Playgroud)
我想知道如何初始化权重和状态,或者更确切地说,Tensorflow 中 LSTM 单元(状态和权重)的默认初始化器是什么?
有没有一种简单的方法来手动设置初始化程序?
注意:tf.get_variable()据我从文档中了解到,使用了 glorot_uniform_initializer 。
首先,LSTM 的权重(ANN 的常用参数集)之间存在差异,它们默认也由 Glorot 初始化或也称为 Xavier 初始化器(如问题中所述)。
一个不同的方面是细胞状态和 LSTM 的初始循环输入的状态。这些由通常表示为 的矩阵初始化initial_state。
留给我们的问题是,如何初始化它initial_state:
- 如果初始化的影响很小,则零状态初始化是一种很好的做法
初始化 RNN 状态的默认方法是使用零状态。这通常很有效,特别是对于诸如语言建模之类的序列到序列任务,其中受初始状态显着影响的输出比例很小。
- 每批零状态初始化会导致过拟合
每个批次的零初始化将导致以下结果:序列到序列模型的早期步骤(即状态重置之后的那些)的损失将大于后期步骤的损失,因为历史较少。因此,它们在学习过程中对梯度的贡献会相对较高。但是,如果所有状态重置都与零状态相关联,则模型可以(并且将)学习如何精确地对此进行补偿。随着状态重置与总观测值的比率增加,模型参数将越来越多地调整到这个零状态,这可能会影响以后时间步的性能。
- 我们还有其他选择吗?
一个简单的解决方案是使初始状态嘈杂(以减少第一个时间步的损失)。在这里查看详细信息和其他想法
| 归档时间: |
|
| 查看次数: |
4097 次 |
| 最近记录: |