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

使用TensorFlow构建模型拟合x=y函数遇精度与收敛问题求助

问题分析与解决方案

你的代码逻辑本身没问题,但学习率设置过高是导致模型无法快速收敛、精度不佳的核心原因。

具体问题点

Adam优化器的默认学习率是1e-3,你设置了1e-1(比默认大100倍)。对于拟合y=x这种极简单的线性任务,过高的学习率会让优化过程在最优解附近持续震荡,无法稳定收敛到w=1、b=0的理想参数。

修正后的代码

调整学习率并添加训练过程的损失输出,方便观察收敛情况:

import numpy as np
import tensorflow as tf

x_data = np.arange(32).reshape(-1,1)/32
y_data = np.copy(x_data)

inputs = tf.keras.Input(shape=1)
output = tf.keras.layers.Dense(units=1, activation='linear')(inputs)
model = tf.keras.Model(inputs=[inputs], outputs=output)
model.summary()

# 降低学习率到1e-3(或1e-2,可根据情况微调)
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=1e-3), loss='mae')
# 添加verbose=1查看每轮损失变化
model.fit(x=x_data, y=y_data, epochs=1000, verbose=1)

# 查看训练后的权重
print("训练后的权重:")
print(model.layers[1].get_weights())

额外建议

  • 无需训练10000轮,这个简单任务通常几百轮就能收敛到接近最优的状态
  • 可以改用MSE损失,对于线性回归任务,MSE的收敛稳定性通常比MAE更好
  • 训练后打印权重,确认w是否接近1,b是否接近0,直观验证模型效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:53:10