You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Keras API中输入数组列表?训练样本数异常求助

解决Keras训练样本数异常的问题

嘿,我马上帮你搞定这个问题~你现在的核心问题是数据拼接的方式错了,导致Keras把你两个数据集当成了仅有的2个样本,而不是把它们的样本合并起来。

1. 先搞清楚你的数据形状

从你给的示例和代码来看:

  • x_train 和 XX_train 应该都是样本集合,每个样本的形状是 (6400, 2)(也就是每个样本包含6400个2维的特征向量)。
  • 你用 np.array([x_train, XX_train]) 会把这两个数据集堆叠成一个形状为 (2, N, 6400, 2) 的数组(假设每个数据集有N个样本),Keras会把第一维度 2 当成样本数量,这就是为什么训练时显示“Train on 2 samples”。

2. 正确的数据拼接方式

你需要把两个数据集在**样本维度(第一维)**合并,而不是堆叠成新的第一维。用 np.concatenate 代替 np.array:

# 合并x_train和XX_train,样本数相加
XFIT = np.concatenate([x_train, XX_train], axis=0)
# 对应合并标签Y
YFIT = np.concatenate([y_train, yy_train], axis=0)

这样处理后,XFIT 的形状会变成 (N+M, 6400, 2)(N是x_train的样本数,M是XX_train的样本数),Keras会自动把第一维当成样本数,训练时就会显示正确的样本数量了。

3. 输入层的形状是对的,不用改!

你的输入层 keras.layers.Input(shape=(6400, 2)) 完全正确,因为每个样本的形状就是 (6400, 2),和这个定义匹配。之前你改形状报错就是因为数据形状和输入层不匹配,现在数据拼接对了,就没问题了。

额外验证小技巧

你可以在代码里加一行打印形状的代码,确认数据是否正确:

print("XFIT shape:", XFIT.shape)
print("YFIT shape:", YFIT.shape)

正常情况下,XFIT的形状应该是 (总样本数, 6400, 2),YFIT是 (总样本数, 3)(因为你输出层是3个分类的softmax)。

内容的提问来源于stack exchange,提问作者OK 400

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 11:52:44