python - 检查输入时出错:预期 lstm_input 有 3 个维度,但得到了形状为 (5, 10) 的数组
问题描述
import numpy as np
from tensorflow.python.keras.layers import Input, Dense
from keras.models import Sequential
from keras.layers import Dense
import tensorflow as tf
import tensorflow
from tensorflow import keras
from keras.layers import Dense
x = np.stack([np.random.choice(range(10), 10, replace=False) for _ in range(5)])
y = np.stack([np.random.choice(range(10), 10, replace=False) for _ in range(5)])
model = keras.models.Sequential()
model.add(keras.layers.LSTM(16, activation='relu', input_shape=(5,10), return_sequences=False))
model.add(keras.layers.Dense(12, activation='relu'))
model.add(keras.layers.Dense(10, activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy')
model.fit(x,y)
我的输入和输出形状是 (5, 10),维度是 2。当我尝试执行上面的代码时,会出现以下错误消息:
ValueError: Error when checking input: expected lstm_input to have 3 dimensions, but got array with shape (5, 10)
解决方案
对于 LSTM,您的输入大小应为 3:[batch_size, nb_timesteps, nb_features]。input_shape 参数指定每个实例的大小,即 [nb_timesteps, nb_features],但 lstm 期望实例批次,因此您发送的张量应该有一个额外的 batch_size 维度,如 [batch_size, 5, 10]
推荐阅读
- python - Django:从数据库中的属性获取所有不同的值
- apache-spark - 如何使用 CTE 在 Spark SQL 中创建临时视图?
- kotlin - 我什么时候在 Kotlin 中使用另一个没有参数的函数?
- angularjs - 使用角度js中的数组设置模型值
- amazon-web-services - CloudWatch 指标基于从日志消息中提取的值
- angular - 在 Angular 中禁用 SSL 验证
- python - XML 解析器返回 NoneType
- java - Int 字段的 Null 值
- android - JNI 的 reinterpret_cast 的替代方案?
- r - 对行对求平均值并根据条件粘贴值