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

使用Keras构建函数预测模型效果不佳,求问题排查与优化

问题分析与解决方案

嘿,我来帮你梳理下问题所在,你猜的没错,网络架构确实有核心问题,不过还有其他几个小细节也拖了后腿,咱们一步步来拆解:

核心问题:网络无法学习非线性映射

你的目标函数是五次多项式,属于典型的非线性函数,但你当前的网络架构里,中间的Dense(5)层没有设置激活函数——Keras里Dense层默认激活是linear(线性)。线性层的叠加本质上还是线性变换,整个网络等价于一个简单的线性模型,根本没法捕捉多项式里的高阶非线性特征!

其他需要调整的细节

除了激活函数,还有几个地方可以优化:

  • 回归任务用错了指标:accuracy是分类任务的专属指标,对回归任务完全没用,应该换成回归相关的指标,比如mean_absolute_error或者mean_squared_error。
  • 网络容量不足:五次多项式需要足够的神经元来拟合高阶项,中间只放5个神经元有点太少了,适当增加数量(比如16、32)或者多加一层,能大幅提升网络的拟合能力。
  • 数据归一化(可选但推荐):你的X范围是0-10,虽然数值不算极端,但把数据缩放到0-1或者-1到1的范围,能帮助Adam优化器更快收敛,减少训练过程中的波动。

修改后的代码示例

import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import matplotlib.pyplot as plt

# 声明并初始化训练数据数组
X = np.arange(0.0, 10.0, 0.05)
Y = np.empty(shape=0, dtype=float)
# 计算Y值
for x in X:
    Y = np.append(Y, float(0.05*(15.72807*x - 7.273893*x**2 + 1.4912*x**3 - 0.1384615*x**4 + 0.00474359*x**5)))

# 数据归一化:把X缩放到0-1范围
X_normalized = X / 10.0

# 修改后的模型架构:加入非线性激活,提升容量
model = Sequential()
model.add(Dense(32, input_shape=(1,), activation='relu'))  # 第一层带ReLU激活
model.add(Dense(32, activation='relu'))  # 第二层带ReLU激活
model.add(Dense(1, activation='linear'))  # 输出层保持线性,适配回归任务

# 编译模型:替换为回归任务合适的指标
model.compile(loss='mean_absolute_error', optimizer='adam', metrics=['mean_absolute_error'])

# 训练模型:适当增加epochs,给网络足够的学习时间
model.fit(X_normalized, Y, epochs=500, batch_size=32, verbose=1)

# 预测并还原X的尺度
YPredict = model.predict(X_normalized)

# 绘制训练数据与预测结果
plt.plot(X, Y, 'C0', label='原始数据')
plt.plot(X, YPredict, 'C1', label='预测结果')
plt.legend()
plt.show()

为什么这样修改有效?

  1. 非线性激活函数:ReLU让网络能够学习复杂的非线性映射,终于能捕捉多项式里的高阶项特征了。
  2. 更大的网络容量:两层32神经元的结构,有足够的参数来拟合五次多项式的复杂规律。
  3. 合适的指标:用mean_absolute_error作为训练过程的监控指标,能直观看到误差的变化趋势。
  4. 数据归一化:让优化器在训练时更稳定,更快找到最优解。

如果你跑完这段代码,应该能看到橙色的预测线和蓝色的原始线贴合得非常紧密啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:44:57