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

Keras训练y=x²回归模型出现准确率为0%问题求助

解决Keras训练y=x²模型准确率为0%的问题

你的代码存在几个关键错误,导致模型完全无法学习到y=x²的规律,以下是问题分析和修正方案:

核心错误:任务类型混淆

你要解决的是回归任务(预测连续值y=x²),但代码里误用了分类任务的损失函数和评估指标:

  • SparseCategoricalCrossentropy是多分类任务的损失函数,完全不适合回归场景
  • accuracy是分类任务的专属指标,对回归任务毫无意义,自然会显示0%

其他次要问题

  1. 数据形状不规范:x_train和y_train被定义为(1,5000)的形状,Keras默认要求输入数据格式为(样本数, 特征数),即应该是(5000,1)
  2. 训练轮次太少:仅训练1轮(epochs=1),模型没有足够时间学习规律
  3. 数据生成效率低:用循环计算y_train可以直接用numpy向量化操作替代,更高效

修正后的代码

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

# 构建模型(保留原有网络结构)
inputs = keras.Input(shape=(1,))
x = layers.Dense(64, activation="relu")(inputs)
x2 = layers.Dense(64, activation="relu")(x)
outputs = layers.Dense(1)(x2)  # 回归任务输出层用线性激活(默认)
model = keras.Model(inputs=inputs, outputs=outputs, name="regression_model")

# 生成训练数据:用numpy向量化操作,调整为标准形状
x_train = np.random.rand(5000, 1)  # (样本数, 特征数)
y_train = x_train ** 2  # 直接向量化计算,无需循环

# 编译模型:改用回归损失函数和合适的指标
model.compile(
    loss=keras.losses.MeanSquaredError(),  # 回归任务首选均方误差
    optimizer=keras.optimizers.RMSprop(),
    metrics=["mean_absolute_error"],  # 用回归指标替代准确率
)

# 训练模型:增加训练轮次
history = model.fit(x_train, y_train, batch_size=10, epochs=50, verbose=1)

# 生成测试数据并评估
x_test = np.random.rand(50000, 1)
y_test = x_test ** 2
test_scores = model.evaluate(x_test, y_test, verbose=2)
print("Test loss (MSE):", test_scores[0])
print("Test MAE:", test_scores[1])

# 可选:验证模型预测效果
sample_x = np.array([[0.2], [0.5], [0.8]])
sample_y = sample_x ** 2
predicted_y = model.predict(sample_x)
print("\n样本验证:")
for x_true, y_true, y_pred in zip(sample_x, sample_y, predicted_y):
    print(f"x={x_true[0]:.2f}, 真实y={y_true[0]:.4f}, 预测y={y_pred[0]:.4f}")

修正后效果说明

  • 训练时会看到损失值(MSE)逐渐下降,说明模型在学习y=x²的规律
  • 测试时用mean_absolute_error(平均绝对误差)评估模型预测精准度,数值越小说明预测越准确
  • 样本验证部分可以直观看到模型对具体x值的预测结果,会接近真实的x²值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:40:36