解决TensorFlow「过拟合与欠拟合」教程中的input_shape错误
问题解答
为什么模型期望形状是(None, 28)?
你定义模型时指定的input_shape=(FEATURES,),是用来描述单个样本的特征形状。TensorFlow/Keras会自动为输入追加一个批量维度(用None表示,代表可接受任意数量的样本组成一批),所以模型实际期望的输入形状是(None, 28)——其中None对应批量大小(比如一次传入32个样本就是(32,28)),后面的28是单个样本的特征数。
错误原因
你传入模型的输入是形状为(28,)的单个样本,缺少了批量维度,和模型要求的(None,28)不匹配,因此触发了形状不兼容的错误。
解决方法
- 给单个输入补全批量维度:如果是测试单个样本,用
np.expand_dims(your_data, axis=0)把(28,)的形状转换成(1,28),再传入模型。 - 检查数据预处理流程:查看
compile_and_fit函数或数据加载代码,确保训练/验证数据的形状是(样本总数, 28),而非单个样本的形状。教程里的compile_and_fit默认处理批量数据,大概率是你在数据准备环节不小心丢失了批量维度。
内容的提问来源于stack exchange,提问作者SapereAude
相关产品推荐
相关产品推荐

