python - ValueError:检查输入时出错:预期 lstm_6_input 具有形状 (87482, 1) 但得到的数组具有形状 (87482, 3)
问题描述
X_train 数据维度为 87482, 3。
但是使用以下代码运行时出现错误。错误是:
ValueError:检查输入时出错:预期 lstm_6_input 具有形状 (87482, 1) 但得到的数组具有形状 (87482, 3)
我的代码是:
model = Sequential()
#model.add(Embedding(top_words, embedding_vecor_length, input_length=max_review_length))
model.add(LSTM(units=3, input_shape=(X_train_rnn.shape[1],1),return_sequences=True))
model.add(LSTM(3, return_sequences=True)) # returns a sequence of vectors of dimension 32
model.add(LSTM(3))
model.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy'])
print(model.summary())
model.fit(X_train_rnn, y_train, epochs=2, batch_size=32)
# Final evaluation of the model
scores = model.evaluate(X_test_rnn, y_test, verbose=0)
解决方案
input_shape=(X_train.shape[1], 1)
应该修复错误,但可能不是整个问题:每个序列有多长?
- LSTM 完整输入形状 (
batch_shape
) 是(batch_size, timesteps, channels)
- 或者,等价地,(samples, timesteps, features)
batch_size=32
在您的 中.fit()
,但如果X_train
维度为(87472, 3)
,您是否有87472
每个长度为 3 ( ) 的样本(序列timesteps=3
)?如果是这样,您将需要input_shape=(3, 1)
(单变量数据),这就是您得到的(X_train.shape[1], 1)
- 如果改为你的
timesteps=87462
,你将需要input_shape=(87462, 3)
- 但这是一个非常糟糕的主意,因为 LSTM 正在努力争取timesteps > 0
我不知道形状X_train_rnn
有什么,所以我用X_train
. 随时澄清。
推荐阅读
- python - 显示 discord bot.py 缺少权限
- javascript - A-Frame,AR.JS。如何在 NFT-Marker 内定位对象?
- r - 如何在R中必要时创建带有插图的等值线世界地图
- .net-core - Blazor 基于角色的列
- c - 未找到“features.h”文件和未找到“libioP.h”文件的消息
- javascript - Leetcode 同树迭代解决方案
- flutter - 颤振:如何创建带有链接和可点击图标的文本小部件
- c++ - c++如何实现运行时类型信息
- laravel - Laravel - 如何在本地开发中使用 https 服务 laravel 项目
- html - 100vh - 不覆盖整个屏幕