Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 具有高层序长度的LSTM(Tensorflow和Keras)_Python_Tensorflow_Keras_Neural Network_Lstm - Fatal编程技术网

Python 具有高层序长度的LSTM(Tensorflow和Keras)

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

我目前在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.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
非常感谢你