Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.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/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
Python 具有多个输入序列和相应的多个输出序列的LSTM_Python_Tensorflow_Keras_Lstm - Fatal编程技术网

Python 具有多个输入序列和相应的多个输出序列的LSTM

Python 具有多个输入序列和相应的多个输出序列的LSTM,python,tensorflow,keras,lstm,Python,Tensorflow,Keras,Lstm,我有一个与重塑LSTM的输入/输出数据有关的问题。虽然有很多帖子都在考虑这些问题,但我无法找到一个合适的解决方案。如果错误很明显,我深表歉意——我对深度学习领域相当陌生 我的问题如下:我执行了一个模拟,产生了几个与时间相关的数据序列,我想将这些数据输入LSTM网络。数据(非常简化)如下所示: X=[[[8, 0, 18, 10] [9, 0, 20, 7] [7, 0, 17, 12]] [[7, 0, 31, 8] [5, 0, 22, 9] [7, 0,

我有一个与重塑LSTM的输入/输出数据有关的问题。虽然有很多帖子都在考虑这些问题,但我无法找到一个合适的解决方案。如果错误很明显,我深表歉意——我对深度学习领域相当陌生

我的问题如下:我执行了一个模拟,产生了几个与时间相关的数据序列,我想将这些数据输入LSTM网络。数据(非常简化)如下所示:

X=[[[8, 0, 18, 10]
    [9, 0, 20, 7]
    [7, 0, 17, 12]]
   [[7, 0, 31, 8]
    [5, 0, 22, 9]
    [7, 0, 17, 12]]]
也就是说,我有两个序列,每个序列有三个时间步,每个时间步有四个特征。因此,X的形状是(2,3,4)。相应地,我想预测如下

y=[[[10]
    [7]
   [12]]
   [[8]
    [9]
   [12]]]
并且具有形状(2,3,1)。也就是说,数据点[8,0,18,10]应该预测[10],然后是点[9,0,20,7],应该预测7,依此类推。然后,我的模型如下所示:

model.add(LSTM(input_shape=(X.shape[1], X.shape[2]), return_sequences=True))
model.add(Dense(50, activation='tanh'))
model.add(Dense(1, activation='tanh'))
虽然这似乎没有错误,但我的结果相当糟糕。最有可能的是,我认为这与正确重塑输出向量有关。此外,我不太确定返回序列是否必须为真。如果设置为False,我会得到错误消息“预期稠密_2有2维,但得到一个形状为(2,3,1)的数组”。对此不太确定。 我也在研究Seq2Seq建模,因为我试图根据一个序列预测一个序列,但我找不到解决办法。
有人能帮忙吗?

您可能正试图从一个只输出-1到1的
'tanh'
中获取大数字

例如,你不能用
tanh
达到10

要么将最终激活替换为
“线性”
(输出任何内容),要么将输出数据规格化为-1和1之间


如果您的数据总是正值,您可以尝试使用
'softplus'
而不是
'linear'
,如果您选择标准化数据,请将其设置为0到1之间,并使用
'sigmoid'

返回序列是正确的,但我相信使用密集层之后,您需要使用时间分布层()谢谢!多年来,我一直试图解决这个问题——使用时间分布可以极大地改善结果。这没有多大意义。在较新的keras版本中,
Dense
=
TimeDistributed(Dense)
,而在较旧的keras版本中,您应该会得到一个错误。我使用的是keras版本2.1.6。可能这仍然算是一个旧版本,因为我没有得到任何errors@DanielMöller你能解释一下为什么这会产生错误吗?很抱歉造成混淆。我的模型的实际数据确实在-1和1之间进行了规范化。我刚刚用上面的原始数据来说明我的问题。