Python Keras重塑输入LSTM
我正在编写一个虚拟示例,以了解LSTM如何使用Keras工作。 我对重塑数据输入和输出的方式有问题 ValueError:输入0与层不兼容:预期ndim=3,发现ndim=2Python 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
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 可能重复的