You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Keras构建简单线性回归模型:预测结果异常求助

Keras线性回归模型预测异常的排查与修复

问题分析

你的代码存在三个核心问题,导致模型无法输出正确预测结果:

  • 未正确导入模型与层类:直接使用Sequential()和Dense()会触发NameError,这两个类需要从tf.keras.models和tf.keras.layers中导入。
  • 输入数据格式不规范:Python列表并非Keras最优输入格式,可能导致训练过程中数据处理异常,影响收敛效果。
  • 训练参数设置不足:当前学习率(0.005)过小、训练轮次(100)不足,模型还未收敛到最优权重(目标权重应为接近10的系数,偏置接近0)。

修复后的代码

import numpy as np
import tensorflow as tf
from tensorflow import keras

# 将列表转为numpy数组,指定float32类型适配Keras输入要求
x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], dtype=np.float32)
y = np.array([10, 20, 30, 40, 50, 60, 70, 80, 90, 100], dtype=np.float32)

# 正确导入并初始化模型
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Dense(units=1, input_shape=(1,)))

# 调整学习率,改用自适应效果更好的Adam优化器
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.1), loss='mse')

# 增加训练轮次,确保模型充分收敛
model.fit(x, y, epochs=200, verbose=1)

# 测试输入同样转为numpy数组
x1 = np.array([11, 12, 13], dtype=np.float32)
predy = model.predict(x1)

print("预测结果:", predy)
# 查看模型权重,验证是否接近目标值[10, 0]
print("模型权重:", model.layers[0].get_weights())

关键修改说明

  1. 修正导入路径:明确指定tf.keras.models.Sequential和tf.keras.layers.Dense,避免命名错误。
  2. 规范数据格式:将输入数据转为numpy.ndarray并指定float32类型,符合Keras对输入数据的标准要求。
  3. 优化训练参数:
    • 提升学习率至0.1,加快模型收敛速度;
    • 增加训练轮次至200,确保模型足够迭代以拟合y=10x的线性规律;
    • 改用Adam优化器,其自适应学习率特性在简单线性任务中收敛更稳定。

运行修复后的代码,预测结果会接近[[110.], [120.], [130.]],模型权重也会趋近于[array([[10.]], dtype=float32), array([0.], dtype=float32)],符合预期的线性回归规律。

内容的提问来源于stack exchange,提问作者solo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 15:44:58