训练房价预测神经网络出现InvalidArgumentError求助
房价预测模型InvalidArgumentError问题原因分析
核心问题:损失函数与任务类型不匹配
- SparseCategoricalCrossentropy的定位:这个损失函数专为多分类任务设计,要求标签是离散的类别索引(如0、1、2等代表不同类别)。如果未设置
from_logits=True,模型输出会经softmax归一化到[0,1]区间,此时标签必须是合法的类别索引,不能是连续数值。 - 你的任务属性:房价预测是典型的回归任务,目标是预测连续的房价数值,而非离散类别。直接将连续房价(如611657)作为标签传入该损失函数,必然触发范围错误——该函数默认只接受符合类别索引规则的离散值,无法处理这类远超[0,1]范围的连续数值。
- 报错的直接诱因:错误提示中的[0,1)是模型输出经softmax后的取值区间,你的标签是远大于1的连续房价,两者完全不匹配,导致标签验证环节抛出InvalidArgumentError。
修复建议
直接替换损失函数为回归任务专用的类型:
- 最常用的选择是
MeanSquaredError()(均方误差),代码示例:model.compile(optimizer='adam', loss=tf.keras.losses.MeanSquaredError()) - 也可根据需求选择
MeanAbsoluteError()(平均绝对误差)等其他回归损失函数。
内容的提问来源于stack exchange,提问作者Priniotis
相关产品推荐
相关产品推荐

