运行癌症检测项目model.fit时出现sequential层输入shape不匹配错误
错误原因
你遇到的维度不匹配报错,核心原因是模型输入层定义的预期维度和实际训练数据的维度不一致。
你用的是经典的乳腺癌检测数据集,455是训练集的总样本数,30是特征维度。Keras定义模型input_shape参数时不需要包含样本批次维度,你大概率是把训练集样本数错误写到了输入形状配置里,才会要求输入带455这个维度。
解决方案
方案1(推荐):修正模型输入层定义
找到你定义Sequential模型第一层的代码,把错误的input_shape=(455, 30)改为input_shape=(30,)即可。
修改示例:
# 错误写法 model = Sequential([ Dense(64, activation='relu', input_shape=(455, 30)), Dense(1, activation='sigmoid') ]) # 正确写法 model = Sequential([ Dense(64, activation='relu', input_shape=(30,)), Dense(1, activation='sigmoid') ])
方案2:适配现有模型维度(不推荐,仅当你确认模型需要3维输入时使用)
如果你的模型本身就是设计为接收3维输入,你可以给训练数据手动扩充中间维度:
# 使用numpy扩充维度 import numpy as np x_train = np.expand_dims(x_train, axis=1) # 如使用TensorFlow,也可以用以下代码 # import tensorflow as tf # x_train = tf.expand_dims(x_train, axis=1)
验证操作
修改完成后先分别打印x_train.shape和model.input_shape,确认两者维度匹配后再执行model.fit即可正常运行。
内容的提问来源于stack exchange,提问作者Weber Wang
相关产品推荐
相关产品推荐

