问题标签 [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.
keras - Keras 有没有办法让有状态 LSTM 的 y 大小不等于 X 批量大小?
我尝试仅在批次结束时更新重量,我知道这是默认行为,但我不明白为什么你需要让你的 X 和 y 大小相同?如果我有 X.shape(12,32,64),其中我使用批量大小 12,那么只有一批为什么不足以拥有 y.shape(1,N)?
我只想在整个批量大小显示给网络后才进行反向传播。为什么要为每个批次项目贴上标签?
示例代码:
在这里我得到了错误
tensorflow - tf.keras.layers.LSTMCell VS tf.compat.v1.nn.dynamic_rnn
让我们考虑一个简单的数据集:
要实现一个简单的 LSTM 模型并通过它运行数据集(无需训练),我可以执行以下操作:
这产生与以下相同的结果:
但是,我不明白如何使用旧版本生成相同的结果:
您能否展示如何修改最后一段代码以获得与前两个相同的结果?
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]
),但我会随机丢弃许多其他样本,只是为了制作数据平衡。
我不确定我是否应该在这里使用有状态的,因为一些短系列可能彼此相距很远。
python - 层 lstm_35 的输入 0 与层不兼容:预期 ndim=3,发现 ndim=4。收到的完整形状:[None, 1966, 7059, 256]
我正在为文本摘要创建一个关于词级嵌入的 seq2seq 模型,我正面临数据形状问题,请帮忙。谢谢。
由于输入的形状,它在训练时会出错。请帮助重新塑造我的数据,因为当前的形状是
编码器数据形状:(50, 1966, 7059) 解码器数据形状:(50, 69, 1183) 解码器目标形状:(50, 69, 1183)
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}
训练:
网络
python - LSTM(Keras)中批量大小、时间步长和误差之间的关系是什么?
让,
Sample Size = 100
(X1,X2,...,X100)
Timesteps = 5
Input Feature = 10
误差计算:
当批量大小 = 样本大小时,如何进行误差计算?我的理解:我将插入X1,X2,X3,X4,X5
LSTM 并在时间步之后得到一个输出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 如何实现批次内的并行性?
参考:
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_shape
and ,我也有上述错误。如果它使用 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 的性能。这看起来令人惊讶吗?
python - 为什么 Keras MAPE 指标在训练期间呈爆炸式增长,而 MSE 损失却没有?
我在 Keras 中实现了一个关注 LSTM 来重现这篇论文。奇怪的行为很简单:我有一个 MSE 损失函数和一个 MAPE 和 MAE 作为指标。在训练期间,MAPE 正在爆炸,但 MSE 和 MAE 似乎训练正常:
MAPE 在每个 epoch 结束时都在爆炸。这种特定行为的原因可能是什么?
MAPE 仍然随着每个时期而减少,所以这不是真正的问题,因为它没有阻碍训练过程吗?
tensorflow - Stateful LSTM Tensorflow Invalid Input_h Shape Error
我正在使用 TensorFlow 对时间序列回归问题进行有状态 LSTM 试验。抱歉,我无法共享数据集。下面是我的代码。
当我运行上面的代码时,在第一个 epoch 结束后,我会收到如下错误。
但是,如果我将batch_size 更改为 1 ,模型将被成功训练,并将模型训练的代码更改为以下内容。
然而,对于非常大的数据(100 万行),由于 batch_size 为 1,模型训练需要很长时间。
所以,我想知道,如何训练批量大小大于 1(例如 64)的有状态 LSTM,而不会出现无效的 input_h 形状错误?
感谢您的回答。