问题标签 [lstm-stateful]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
37 浏览

keras - Keras 有没有办法让有状态 LSTM 的 y 大小不等于 X 批量大小?

我尝试仅在批次结束时更新重量,我知道这是默认行为,但我不明白为什么你需要让你的 X 和 y 大小相同?如果我有 X.shape(12,32,64),其中我使用批量大小 12,那么只有一批为什么不足以拥有 y.shape(1,N)?

我只想在整个批量大小显示给网络后才进行反向传播。为什么要为每个批次项目贴上标签?

示例代码:

在这里我得到了错误

0 投票
0 回答
412 浏览

tensorflow - tf.keras.layers.LSTMCell VS tf.compat.v1.nn.dynamic_rnn

让我们考虑一个简单的数据集:

要实现一个简单的 LSTM 模型并通过它运行数据集(无需训练),我可以执行以下操作:

这产生与以下相同的结果:

但是,我不明白如何使用旧版本生成相同的结果:

您能否展示如何修改最后一段代码以获得与前两个相同的结果?

0 投票
1 回答
98 浏览

keras - 有状态与无状态 LSTM

我正在尝试在 Keras 中使用 LSTM,但我不确定我应该使用 statefull 还是 stateless LSTM。我在网上阅读了很多资源,但似乎它们不适用于我的案例。

我有一个很长的预测序列X=[X1,X2,....,Xn]和一个很长的响应序列y=[0,0,...,1,1,0,...0]。它们具有相同的长度,响应只能取值 1 或 0。我的计划是对长预测序列进行二次抽样,并使用短序列(长度 4)来预测接下来 3 个时间点的响应。所以我的训练数据看起来像这样

如果我使用所有这些可用的短系列(样本),我认为我应该选择有状态的。但是,由于y与 1 相比,0 更多,我将保留所有在短响应系列中具有 1 的样本(例如:保留此样本[y5=0,y6=1,y7=0]),但我会随机丢弃许多其他样本,只是为了制作数据平衡。

我不确定我是否应该在这里使用有状态的,因为一些短系列可能彼此相距很远。

0 投票
1 回答
869 浏览

python - 层 lstm_35 的输入 0 与层不兼容:预期 ndim=3,发现 ndim=4。收到的完整形状:[None, 1966, 7059, 256]

我正在为文本摘要创建一个关于词级嵌入的 seq2seq 模型,我正面临数据形状问题,请帮忙。谢谢。

由于输入的形状,它在训练时会出错。请帮助重新塑造我的数据,因为当前的形状是

编码器数据形状:(50, 1966, 7059) 解码器数据形状:(50, 69, 1183) 解码器目标形状:(50, 69, 1183)

这是模型的总结

0 投票
1 回答
40 浏览

pytorch - 使用 LSTM 有状态来传递上下文 b/w 批次;可能是上下文传递中的一些错误,没有得到好的结果?

在将数据提供给网络之前,我已经检查了数据。数据是正确的。

使用 LSTM 并传递上下文 b/w 批次。per_class_accuracy 正在改变,但损失并没有下降。卡了很久,不知道代码有没有错误?

我有基于不平衡数据集的多类分类问题

数据集类型:CSV

数据集大小:20000

基于传感器的 CSV 数据

X = 0.6986111111111111,0,0,1,0,1,0,0,0,1,0,0,0,0,1,0,0,0,1,1,0,0,0

Y =请假

每班准确率:{'leaveHouse': 0.34932855, 'getDressed': 1.0, 'idle': 0.8074534, 'prepareBreakfast': 0.8, 'goToBed': 0.35583413, 'getDrink': 0.0, 'takeShower': 1.0, 'useToilet' :0.0,“吃早餐”:0.8857143}

训练:

网络

0 投票
1 回答
894 浏览

python - LSTM(Keras)中批量大小、时间步长和误差之间的关系是什么?

让,

Sample Size = 100(X1,X2,...,X100)

Timesteps = 5

Input Feature = 10

误差计算:

当批量大小 = 样本大小时,如何进行误差计算?我的理解:我将插入X1,X2,X3,X4,X5LSTM 并在时间步之后得到一个输出5,比如说Y1

错误E1 = X6 - Y1。同样我会计算E2,E3,...,E95

Actual Error = E1+E2+....+E95. 这将用于更新权重。

这是正确的吗?

批处理错误:

基于以上理解。如果batch size = 10. 然后只会E1,E2,E3,E4 and E5用于计算实际误差。这将用于更新权重。

有状态 LSTM 中的批处理:

批次允许模型允许并行性,其中批次中的每个实体计算其误差,然后将所有误差相加。如果 LSTM 是有状态的(前一个序列的隐藏状态用于初始化下一个序列的隐藏状态,这种对 Satetful 的理解正确吗?),LSTM 如何实现批次内的并行性?

参考:

LSTM 批次与时间步长

理解 Keras LSTM:批量大小和状态的作用

关于 RNN 中的批大小和时间步长的疑问

0 投票
0 回答
155 浏览

python - 如何在 Keras 的 LSTM 中修复以下错误?如果 RNN 是有状态的,请指定 `batch_input_shape`

在 Keras 中运行我的 LSTM 时出现以下错误:

我有一个 Pandas 数据框,它是一个按分钟索引的时间序列,训练集和测试集为X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = .2, shuffle = False). X_train.shape是 (27932, 7) 并且X_test.shape是 (6984, 7)。我将 X_train 和 X_test 归一化并重塑为 3D 为:

X 重塑背后的逻辑是我希望我的 LSTM 在 6983 个样本中学习 4 个时间步长(即 4 分钟)的样本。我想针对(X_train.shape[0], 1, X_train.shape[1]).

我的 LSTM 如下:

具有讽刺意味的是,即使我在 LSTM 的第一层中明确说明batch_input_shapeand ,我也有上述错误。如果它使用 X_train 的 3D 形状和 X_test 的 3D 形状,stateful = True我运行我的 LSTM 没有问题。(X_train.shape[0], 1, X_train.shape[1])(X_test.shape[0], 1, X_test.shape[1])

我的代码的哪一部分触发了错误?

顺便说一句,我无法使用比我在代码中描述的更多的隐藏单元来提高 LSTM 的性能。这看起来令人惊讶吗?

0 投票
1 回答
1587 浏览

python - 为什么 Keras MAPE 指标在训练期间呈爆炸式增长,而 MSE 损失却没有?

我在 Keras 中实现了一个关注 LSTM 来重现这篇论文。奇怪的行为很简单:我有一个 MSE 损失函数和一个 MAPE 和 MAE 作为指标。在训练期间,MAPE 正在爆炸,但 MSE 和 MAE 似乎训练正常:

MAPE 在每个 epoch 结束时都在爆炸。这种特定行为的原因可能是什么?

MAPE 仍然随着每个时期而减少,所以这不是真正的问题,因为它没有阻碍训练过程吗?

0 投票
1 回答
1161 浏览

tensorflow - Stateful LSTM Tensorflow Invalid Input_h Shape Error

我正在使用 TensorFlow 对时间序列回归问题进行有状态 LSTM 试验。抱歉,我无法共享数据集。下面是我的代码。

当我运行上面的代码时,在第一个 epoch 结束后,我会收到如下错误。

但是,如果我将batch_size 更改为 1 ,模型将被成功训练,并将模型训练的代码更改为以下内容。

然而,对于非常大的数据(100 万行),由于 batch_size 为 1,模型训练需要很长时间。

所以,我想知道,如何训练批量大小大于 1(例如 64)的有状态 LSTM,而不会出现无效的 input_h 形状错误?

感谢您的回答。

0 投票
2 回答
39 浏览

python - 为一个输入和两个输出构建 LSTM 模型

我想构建一个具有一个输入和两个输出的 LSTM 模型。我的数据和图一样。我的模型如下。但它只预测一个输出。 数据集在这里

你能帮我设计两个输出的模型吗?谢谢