python - Keras:ValueError:检查输入时出错
问题描述
我有长度为 7499042 的熊猫数据框,如下所示:
'X' 'y'
[0.1,0.2...] 0.2
[0.3,0.4,..] 0.3
.
.
pandas 数据框中的每个值都是长度为 50 的 numpy 数组。现在我将其提取如下:
input = df['X'].values
我有这样的层:
main_input = Input(shape=(50,1), name='main_input')
lstm_out=LSTM(32,activation='tanh',recurrent_activation='sigmoid',return_sequences=True)
mean_pooling=AveragePooling1D(pool_size=2,strides=2,padding='valid')
但是当我在训练时将我的输入传递给这个时。它显示错误:
ValueError: Error when checking input: expected main_input to have 3 dimensions, but got array with shape (7499042, 1)
它显示的输入形状是 (7499042,)。请帮我解决这个问题。
解决方案
在将特征馈送到 LSTM 网络之前,您需要重塑特征。LSTM 层采用 3 维输入,对应于 (batch_size, timesteps, features)。这意味着单个观察必须是二维的(时间步长、特征)
在您的情况下,单个观察是一维 (50 ,) :如果转换正确完成,则整个数据集维度是 : (7499042 , 50)。您必须在使用之前重塑您的输入:
input = df['X'].values
input = input.reshape(input.shape[0] , input.shape[1] , 1)
如果 Pandas 没有将您的初始特征转换为 2d DataFrame,您必须在执行上述代码之前执行此操作。
推荐阅读
- android - 在装有 Android 8.0 的三星设备上在 RTL 中格式化“%d - %d”时出现错误
- python - Python virtualenv 需要和它所属的项目在同一个地方创建?
- python - 防止 FileExistsError 的功能
- c++ - 为什么这段代码只识别文本文件中的第一行?输入任何大于 1 的数字都会返回“未找到原子序数”
- eclipse - Spring Tool Suite:@Configuration 类可能不是最终的。删除 final 修饰符以继续
- python - 圆球弹跳的角度反射
- javascript - undefined 不是对象(评估 '_this3.props.navigation.navigate')
- jquery - 无法在 javascript 中将事件绑定到 datetimepicker
- dashboard - django oscar - 仪表板/凭证
- html - 图标不与 fontAwsome 一起显示