python - 无法为多元 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)
解决方案
推荐阅读
- javascript - 向消息添加多个反应时出现问题
- javascript - Typescript - 基于列表中的值的条件类型
- r - R data.frame 到 JSON,其中每个数据点都有列名和值
- ios - 由于访问控制检查,XMLHttpRequest 无法加载 https://www.googleapis.com/drive/v3/files
- rust - EnumConstant 的逆为 u32
- keycloak - KeyCloak 自定义 REST 端点 - 找不到管理客户端类
- command-line - 如何运行可执行文件,然后在 Fortran 中读取输出文件?
- c# - web api 无法在 azure 上的 linux 容器中使用 NetCore 3 web api 启动
- javascript - 如何使用
- node.js - 为什么我的 shell 会产生“错误:找不到模块‘commander’”