首页 > 解决方案 > 无法为多元 LSTM 获得正确的输入尺寸

问题描述

我正在尝试使用 LSTM 为时间序列预测问题训练循环神经网络,但是我无法正确输入维度。

数据是大约 50 家商店和数千件商品的每月商店销售额。目标是每个项目/商店组合的月销售额,没有滞后。训练集是前 4 个时间步。最后一个是验证。(原始数据集为 31 个月)

我认为我的输入数据是正确的(样本、时间步长、特征),我目前的目标是(样本、时间步长),但不确定。我的想法是非常感谢任何人查看我收到的错误消息并提供他们的建议。

data = data.reshape(521398,4,28)
#targets = targets.reshape(521398,4,1)


xt = data[:,:4,:]
xv = data[:,4:,:]
yt = targets[:,:4]
yv = targets[:,4:]

print(data.shape, targets.shape)

(521398, 4, 28) (521398, 4)

import tensorflow as tf 
from keras.models import Sequential
from keras.layers import LSTM,Dense,Dropout
from keras import models
from keras import layers

model = Sequential()

model.add(LSTM(256, activation = 'relu', input_shape = (4,28)))
model.add(Dropout(0.4))
model.add(Dense(4,))

model.compile(loss = 'mse', optimizer = 'adam', accuracy = 'mae')

history = model.fit(xt,yt,batch_size = 4096, epochs = 20,validation_data = (xv, yv))

这会引发错误:

ValueError Traceback (last last call last) in () ----> 1 history = model.fit(xt,yt,batch_size = 4096, epochs = 20,validation_data = (xv, yv))

2 帧 /usr/local/lib/python3.6/dist-packages/keras/engine/training_utils.py 在standardize_input_data(数据,名称,形状,check_batch_axis,exception_prefix)139':预期'+名称[i]+'到形状为 ' + 140 str(shape) + ' 但得到的数组形状为 ' + --> 141 str(data_shape)) 142 返回数据 143

ValueError:检查输入时出错:预期 lstm_1_input 的形状为 (4, 28),但得到的数组的形状为 (0, 28)

标签: pythontensorflowkerasdeep-learninglstm

解决方案


推荐阅读