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

相同特征对应不同标签时,如何正确训练神经网络?

神经网络预测结果不符合预期的问题分析与解决

问题背景

你作为机器学习新手,在训练以下数据的神经网络后,预测结果不符合预期:

训练数据:

train_x = np.array([1, 1, 1, 2, 2, 2])
train_y = np.array([1., 0., 1., 0., 0., 1.])

模型构建与训练代码:

inpLayer = tf.keras.layers.Input(1)
hiddenLayer = tf.keras.layers.Dense(2, activation='relu')(inpLayer)
outputLayer = tf.keras.layers.Dense(1, activation='sigmoid')(hiddenLayer)    
model = tf.keras.models.Model(inpLayer, outputLayer)

model.compile('adam', 'binary_crossentropy', metrics)
model.fit(train_x, train_y, 1, 10000, 2)

训练10000次后,执行model.predict(np.array([1, 2]))得到结果:

[[0.50000435]
 [0.50000435]]

核心问题:训练数据无有效规律

你的训练数据本身不存在可学习的映射关系:

  • 当输入x=1时,对应的标签y既有1也有0,完全矛盾
  • 当输入x=2时,对应的标签y同样既有0也有1,没有固定规律

这种情况下,模型无法学到任何有效的输入输出对应关系,最终只能收敛到接近0.5的预测值——这相当于随机猜测,是模型在这种无规律数据下的合理表现。

代码中的其他小问题

除了数据本身的问题,你的代码还有几个需要修正的细节:

  • metrics参数未指定具体指标,应该写成metrics=['accuracy'],否则会引发参数错误
  • 输入数据建议调整为二维形状:train_x = train_x.reshape(-1, 1),虽然Keras会自动适配一维输入,但显式调整能避免潜在的形状兼容问题
  • model.fit中的validation_split参数错误,该参数需要传入0到1之间的比例值(比如0.2表示用20%数据做验证),而不是整数2

解决建议

如果想要模型输出合理的预测结果,你需要:

  1. 重新整理训练数据,确保相同输入对应一致的标签,或者增加更多特征让模型能区分不同样本的差异
  2. 修正代码中的参数错误,确保训练过程正常运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 03:54:30