线性回归模型.fit()报错:Mutation::Apply error问题求助
问题分析与解决方案
1. 损失函数匹配错误
你的任务是回归任务(预测连续数值MPG),但错误使用了分类任务专用的SparseCategoricalCrossentropy损失函数,这会导致模型训练逻辑完全错位,是触发错误的核心原因之一。
修正代码
将编译部分的损失函数替换为回归任务适用的MeanSquaredError,同时调整过高的学习率:
horsepower_model.compile( loss=losses.MeanSquaredError(), optimizer=optimizers.legacy.Adam(learning_rate=0.01), metrics=['mean_absolute_error']) # 回归任务使用回归指标,而非分类用的accuracy
2. TensorFlow Metal GPU兼容性问题
错误日志中的metal_plugin/src/graph/remapper/remapper.cc报错,是Mac环境下TensorFlow使用Metal GPU加速时的已知bug,尤其在极简模型(单Dense层线性回归)上容易触发。
解决办法
- 临时禁用GPU:在代码最开头添加以下代码强制使用CPU运行:
import os os.environ["CUDA_VISIBLE_DEVICES"] = "-1" - 升级TensorFlow版本:该bug在TensorFlow 2.15及以上版本已修复,执行命令升级:
pip install --upgrade tensorflow - 降级到兼容版本:若升级后仍有问题,可降级到2.13版本:
pip install tensorflow==2.13
额外优化点
- 确保输入特征为二维数组(匹配模型输入格式),对特征数组添加维度:
horsepower_features = np.array(train_features['Horsepower']).reshape(-1, 1) horsepower_val_features = np.array(val_features['Horsepower']).reshape(-1, 1) horsepower_test = np.array(test_features['Horsepower']).reshape(-1, 1) - 原学习率0.1过高,调整为0.01或0.001可避免训练时损失剧烈震荡。
内容的提问来源于stack exchange,提问作者Qendala
相关产品推荐
相关产品推荐

