use*_*243 9 lstm keras tensorflow dropout
假设我们有一个用于时间序列预测的 LSTM 模型。此外,这是一种多变量情况,因此我们使用多个特征来训练模型。
ipt = Input(shape = (shape[0], shape[1])
x = Dropout(0.3)(ipt) ## Dropout before LSTM.
x = CuDNNLSTM(10, return_sequences = False)(x)
out = Dense(1, activation='relu')(x)
Run Code Online (Sandbox Code Playgroud)
我们可以Dropout在 LSTM 之前(如上面的代码)或 LSTM 之后添加层。
如果我们在 LSTM 之前添加它,它是在时间步长(时间序列的不同滞后)或不同的输入特征上应用 dropout,还是两者兼而有之?
如果我们在 LSTM 之后添加它并且因为return_sequencesis False,那么 dropout 在这里做什么?
dropoutoption inLSTM和 dropout layer before LSTMlayer有什么区别吗?
默认情况下,Dropout创建一个由 0 和 1 组成的随机张量。没有模式,没有特权轴。所以,你不能说一个特定的东西被丢弃了,只是张量中的随机坐标。(好吧,它删除了特征,但每个步骤的特征不同,每个样本的特征也不同)
如果需要,您可以使用该noise_shape属性,该属性将定义随机张量的形状。然后您可以选择是否要删除步骤、特征或样本,或者可能是组合。
noise_shape = (1,steps,1) noise_shape = (1,1, features)noise_shape = (None, 1, 1)还有SpatialDropout1D层,它noise_shape = (input_shape[0], 1, input_shape[2])自动使用。这会为所有时间步删除相同的特征,但单独处理每个样本(每个样本将删除不同的特征组)。
在LSTM你拥有shape = (None, 10). 因此,您使用Dropout的方式与在任何完全连接的网络中使用的方式相同。它为每个样本删除一组不同的特征。
作为一个论点的辍学LSTM有很多不同之处。它生成 4 个不同的 dropout 掩码,用于为每个不同的门创建不同的输入。(您可以查看LSTMCell代码来检查这一点)。
此外,还有 的选项recurrent_dropout,它将生成 4 个 dropout 掩码,但将应用于状态而不是输入,循环计算的每一步。
| 归档时间: |
|
| 查看次数: |
4292 次 |
| 最近记录: |