Keras model.fit训练时是否使用验证数据?维度不符为何提前终止?
问题解答:训练阶段验证集维度错误导致程序终止的原因
这是因为Keras的model.fit()在正式启动训练循环之前,会先对所有传入的数据集(包括训练集和验证集)做全面的兼容性校验,不是等训练完一轮才去处理验证集。具体原因如下:
- 模型的输入层形状是固定的(由你构建模型时定义,这里要求输入为
(None, 84)),Keras会优先检查训练集和验证集的输入是否匹配这个形状。你的验证集输入是119维,和模型要求的84维完全不符,校验直接失败,所以程序还没真正开始训练就终止了。 - 你看到的
Epoch 1/100只是日志输出的起始标识,此时还处于fit()的初始化流程阶段,并没有进入实际的训练步骤。只要数据校验环节有任何一项不满足要求(比如形状不匹配、数据类型不对等),都会直接抛出错误并终止整个流程。 model.fit()的设计逻辑是先确保所有输入数据都符合模型要求,再启动训练,避免训练到一半才发现验证集无法使用,浪费计算资源。
解决建议
调整验证集的输入特征维度,使其和训练集一致:要么从df中选择和train1对应的84个特征列,要么如果是模型输入层定义错误,就修改模型的输入形状为(None, 119)。
内容的提问来源于stack exchange,提问作者vish
相关产品推荐
相关产品推荐

