转Numpy数组后LSTM光伏功率预测模型出现TypeError问题
问题解决:LSTM input_shape设置导致TypeError错误
错误根源
你在定义LSTM层时的input_shape=(x_train[1], 1)是错误写法:
x_train[1]是直接取训练数组的第二个样本数据,而非输入序列的维度参数- LSTM要求
input_shape传入的是**(时间步长, 特征数)**,需要从数组的形状属性中获取
修正代码
将错误行替换为:
model.add(LSTM(50, return_sequences=True, input_shape=(x_train.shape[1], 1)))
完整修正后的模型构建代码
# build the LSTM model model = Sequential() model.add(LSTM(50, return_sequences=True, input_shape=(x_train.shape[1], 1))) model.add(LSTM(50, return_sequences=False)) model.add(Dense(25)) model.add(Dense(1))
原理说明
经过np.reshape后,你的x_train是三维数组,形状为(样本数量, 时间步长, 特征数):
x_train.shape[0]:训练样本的总数x_train.shape[1]:每个样本包含的时间步长(对应你设置的1500)x_train.shape[2]:每个时间步的特征数量(这里是1,因为仅用到AC_POWER单特征)
LSTM层的input_shape不需要指定样本数(Keras会自动适配),只需传入后面两个维度即可。
内容的提问来源于stack exchange,提问作者blambert
相关产品推荐
相关产品推荐

