ValueError:发现样本数量不一致的输入变量:[1, 74]

Posted

技术标签:

【中文标题】ValueError:发现样本数量不一致的输入变量:[1, 74]【英文标题】:ValueError: Found input variables with inconsistent numbers of samples: [1, 74] 【发布时间】:2022-01-16 17:22:02 【问题描述】:

我想申请 LSTM。 我有 12 个特征和 74 行

删除目标变量后我的数据形状并为 3d 数组重塑它:(1, 74, 12) 和我的目标形状:(74,) 当我使用此代码拆分数据时:

x_train, x_test, y_train, y_test = train_test_split(data_1, target, test_size = 0.2,random_state =25)

我收到了这个错误:

ValueError: 发现样本数量不一致的输入变量:[1, 74]

我很好地定义了模型,但是当我拟合模型时,我也遇到了另一个错误

定义模型:

model = Sequential()
model.add(LSTM(1, batch_input_shape=(1, 74, 12), return_sequences = True))
model.add(Dense(units = 1, activation = 'sigmoid'))
model.compile(loss='mean_absolute_error', optimizer='adam', metrics=['accurecy'])
model.summary()

拟合模型:

history = model.fit(x_train, y_train, epochs = 100, validation_data= (x_test, y_test))

这里我也有这个错误:

ValueError:layersequential_14 的输入 0 与该层不兼容:预期 ndim=3,发现 ndim=2。收到的完整形状:(无,12)

我该如何解决这个错误?

【问题讨论】:

可以分享整个traceback吗 请您编辑问题以添加一个简洁而有意义的标题吗? 我认为您需要将数据重新采样为(74,1, 12) 而不是(1, 74, 12) 【参考方案1】:

tf.keras.layers.LSTM 需要输入:形状为 [batch, timesteps, feature] 的 3D 张量。

import tensorflow as tf
inputs = tf.random.normal([32, 10, 8])
lstm = tf.keras.layers.LSTM(4, return_sequences=True, return_state=True)
whole_seq_output, final_memory_state, final_carry_state = lstm(inputs)
print(whole_seq_output.shape)

输出

(1, 74, 4)

如果您的输入形状是二维的,请使用tf.expand_dims(input, axis=0) 添加额外的维度。

【讨论】:

以上是关于ValueError:发现样本数量不一致的输入变量:[1, 74]的主要内容,如果未能解决你的问题,请参考以下文章

ValueError:发现样本数量不一致的输入变量:[100, 300]

混淆矩阵 - ValueError:发现样本数量不一致的输入变量

ValueError:发现样本数量不一致的输入变量:[2750, 1095]

ValueError:发现样本数量不一致的输入变量:[29675、9574、29675]

Sklearn:ValueError:发现样本数量不一致的输入变量:[1, 6]

GridseachCV - ValueError:发现样本数量不一致的输入变量:[33 1]