Python Keras重塑输入LSTM

Python Keras重塑输入LSTM,python,keras,reshape,lstm,Python,Keras,Reshape,Lstm,我正在编写一个虚拟示例,以了解LSTM如何使用Keras工作。 我对重塑数据输入和输出的方式有问题 ValueError:输入0与层不兼容:预期ndim=3,发现ndim=2 import random import numpy as np from keras.layers import Input, LSTM, Dense from keras.layers.wrappers import TimeDistributed from keras.models import Model de

我正在编写一个虚拟示例,以了解LSTM如何使用Keras工作。 我对重塑数据输入和输出的方式有问题

ValueError:输入0与层不兼容:预期ndim=3,发现ndim=2

import random
import numpy as np

from keras.layers import Input, LSTM, Dense
from keras.layers.wrappers import TimeDistributed
from keras.models import Model

def gen_number():
    return np.random.choice([random.random(), 1], p=[0.2, 0.8])    
truth_input = [gen_number() for i in range(0,2000)]    
# shift input by one
truth_shifted = truth_input[1:] + [np.mean(truth_input)]      
truth = np.array(truth_input)
test_ouput = np.array(truth_shifted)        
truth_reshaped = truth.reshape(1, len(truth), 1)    
shifted_truth_reshaped = test_ouput.reshape(1, len(test_ouput), 1)  
yes = Input(shape=(len(truth_reshaped),), name = 'truth_in')    
recurrent = LSTM(20, return_sequences=True, name='recurrent')(yes)    
TimeDistributed_output = TimeDistributed(Dense(1), name='test_pseudo')(recurrent)    
model_built = Model(input=yes, output=TimeDistributed_output)    
model_built.compile(loss='mse', optimizer='adam')    
model_built.fit(truth_reshaped, shifted_truth_reshaped, nb_epoch=100)
我需要如何正确输入数据

yes = Input(shape=(len(truth_reshaped),), name = 'truth_in')
Len(truth_reformed)将返回1,因为您将其形状设置为(12000,1)。这里,第一个1是序列数,2000是序列中的时间步数,第二个1是序列中每个元素的值数

所以你的输入应该是

yes = Input(shape=(len(truth),1), name = 'truth_in')
这将告诉您的网络,输入将是长度为len(真值,1)的序列,元素的维度为1

可能重复的