gpt4 book ai didi

python - ValueError : Error when checking input: expected lstm_1_input to have shape (973, 215) 但得到形状为 (61, 215) 的数组

转载 作者:太空宇宙 更新时间:2023-11-03 21:21:06 25 4
gpt4 key购买 nike

当我尝试通过更改许多参数来解决以下问题时,我收到了多个不同的 ValueErrors

这是一个时间序列问题,我有 60 个商店、215 个商品、1034 天的数据。我划分了 973 天用于训练,61 天用于测试。:

train_x = train_x.reshape((60, 973, 215))
test_x = test_x.reshape((60, 61, 215))
train_y = train_y.reshape((60, 973, 215))
test_y = test_y.reshape((60, 61, 215))

我的模型:

model = Sequential()
model.add(LSTM(100, input_shape=(train_x.shape[1], train_x.shape[2]),
return_sequences='true'))
model.add(Dense(215))
model.compile(loss='mean_squared_error', optimizer='adam', metrics=
['accuracy'])
history = model.fit(train_x, train_y, epochs=10,
validation_data=(test_x, test_y), verbose=2, shuffle=False)

ValueError: Error when checking input: expected lstm_1_input to have shape (973, 215) but got array with shape (61, 215)

最佳答案

您已根据时间步长(而不是样本)分割数据。您需要首先决定您的样本是什么。为了得到答案,我假设它们沿着第一个轴(假设数据已被构建为监督时间序列问题)。

LSTM 中的 input_size 需要 (timesteps, data_dim) 的形状,如所述 here ,并且每个批处理的这些尺寸必须保持相同。在您的示例中,训练和测试的样本具有不同的维度。批量大小可以不同(除非使用 batch_size 参数指定)。

您的数据应沿第一个轴划分为训练和测试。以下是 Keras 教程中的一个类似示例:

from keras.models import Sequential
from keras.layers import LSTM, Dense
import numpy as np

data_dim = 16
timesteps = 8
num_classes = 10

# expected input data shape: (batch_size, timesteps, data_dim)
model = Sequential()
model.add(LSTM(32, return_sequences=True,
input_shape=(timesteps, data_dim))) # returns a sequence of vectors of dimension 32
model.add(LSTM(32, return_sequences=True)) # returns a sequence of vectors of dimension 32
model.add(LSTM(32)) # return a single vector of dimension 32
model.add(Dense(10, activation='softmax'))

model.compile(loss='categorical_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])

# Generate dummy training data
x_train = np.random.random((1000, timesteps, data_dim))
y_train = np.random.random((1000, num_classes))

# Generate dummy validation data
x_val = np.random.random((100, timesteps, data_dim))
y_val = np.random.random((100, num_classes))

model.fit(x_train, y_train,
batch_size=64, epochs=5,
validation_data=(x_val, y_val))

您会注意到训练和测试数据的timesteps 以及x_train.shape[1] == x_val.shape[1] 是相同的。它是沿第一个轴 x_train.shape[0] 不同的样本数量,为 1000x_val.shape[0]100

关于python - ValueError : Error when checking input: expected lstm_1_input to have shape (973, 215) 但得到形状为 (61, 215) 的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54242478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com