Python 具有高层序长度的LSTM(Tensorflow和Keras)
我目前在Tensorflow和LSTM方面有一个大问题,无法找到解决方案: 我想用一个大序列长度为100的LSTM。 对于该型号,我有以下配置:Python 具有高层序长度的LSTM(Tensorflow和Keras),python,tensorflow,keras,neural-network,lstm,Python,Tensorflow,Keras,Neural Network,Lstm,我目前在Tensorflow和LSTM方面有一个大问题,无法找到解决方案: 我想用一个大序列长度为100的LSTM。 对于该型号,我有以下配置: model.add(Masking(mask_value=0.0, input_shape=(1, x.shape[1]))) model.add(LSTM(10)) model.add(Dense(1)) 我的输入x(有4个独立的输入变量)是一个具有特定长度和规范化值的数组。。。 各列均为独立的输入变量: 这里是前3行 array([[-0.824
model.add(Masking(mask_value=0.0, input_shape=(1, x.shape[1])))
model.add(LSTM(10))
model.add(Dense(1))
我的输入x(有4个独立的输入变量)是一个具有特定长度和规范化值的数组。。。
各列均为独立的输入变量:
这里是前3行
array([[-0.82425835, -0.58544026, 1.51368749, -1.00692614],
[-0.82227587, -0.58777757, 1.51125719, -1.00782088],
[-0.82254579, -0.57388769, 1.50873596, -1.00916302],
...
]])
输出y,或者说应该预测的变量是另一个自变量。
现在,我有一个特定的形状/数据类型:
array([[-0.43949472],
[-0.43949472],
[-0.43949472],
...]])
到目前为止,我使用了Keras预处理功能:
dataset = keras.preprocessing.timeseries_dataset_from_array(x, y, sequence_length=1, sampling_rate=1, batch_size=128)
对于sequence_length=1,所有操作都使用fit命令运行:
history = model.fit(dataset, epochs=1000, callbacks=sel_callback)
现在我想使用LSTM,就像我认为应该使用的一样,具有更长的序列长度100。
如果我只是更改Keras预处理函数中的sequence\u length
选项,一切都会开始,Tensorflow告诉我,我的精度很高,例如0.03,但最后的输出看起来完全错误!
我必须以不同的方式预处理数据吗?!(对于序列长度=1,它可以正常工作…)
此外,如果我想添加另一个LSTM,例如:
model.add(Masking(mask_value=0.0, input_shape=(1, x.shape[1])))
model.add(LSTM(10, return_sequences=True))
model.add(LSTM(10))
model.add(Dense(1))
然后我得到一个错误,模型根本不工作。。。当序列长度=1时,添加第二个LSTM是否有效
错误如下所示:
File "...\tensorflow\python\eager\execute.py", line 59, in quick_execute
tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
tensorflow.python.framework.errors_impl.InvalidArgumentError: Operation expected a list with 1 elements but got a list with 2 elements.
[[{{node gradients/TensorArrayUnstack/TensorListFromTensor_grad/TensorListStack}}]]
[[PartitionedCall]] [Op:__inference_train_function_13514]
Function call stack:
train_function -> train_function -> train_function
所以我的问题是:
- 我是否必须以高序列长度以不同方式准备数据?或者我有一个不同的问题,我还没有找到
- 为什么我不能在更改序列时添加第二层\u长度>1