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

为何同一训练后模型的model.predict输出不同结果?

解答:为什么同一训练好的模型对不同输入会得到不同预测结果

首先我们先明确你的实验背景细节:

实验代码

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import numpy as np

x_input = np.array([[1,2,3,4,5]])
y_input = np.array([[10]])

model = Sequential()
model.add(Dense(units=32, activation="tanh", input_dim=x_input.shape[1], kernel_initializer='random_normal'))
model.add(Dense(units=1, kernel_initializer='random_normal'))

model.compile(loss='mse', optimizer='sgd', metrics=['accuracy'])
history = model.fit(x_input, y_input, epochs=10, batch_size=32)

实际预测结果

  • 输入[[1,2,3,4,5]]的输出:array([[9.993563]], dtype=float32)
  • 输入[[1,2,5,4,5]]的输出:array([[10.180285]], dtype=float32)

核心结论:完全不应该得到相同的预测结果,具体原因拆解如下:

  • 输入特征存在明确差异:你提供的两个输入仅第三个特征值不同(从3变为5),神经网络的核心作用就是学习输入特征与输出之间的映射关系,输入特征的变化必然会通过网络层级传递,最终影响输出结果。
  • 隐藏层的非线性变换作用:你的模型包含一个带32个tanh激活单元的隐藏层,这个层会对输入特征做非线性转换。第三个特征的数值变化会直接改变隐藏层中多个单元的激活值,经过后续全连接层的计算后,最终输出自然会产生差异。
  • 模型权重的学习逻辑:哪怕你只用了单个样本训练,模型的权重是随机初始化的,训练过程中会根据这个样本的误差更新权重,让模型尽可能拟合输入到输出的关联。这个过程会让模型对输入特征的变化产生响应——毕竟模型的目标是学习特征和输出的对应关系,而非忽略特征的变化。

简单来说:你的神经网络并不是一个“无视输入变化”的模型,它会主动学习特征与输出的关联,所以输入特征不同、输出不同是完全符合预期的正常结果。

内容的提问来源于stack exchange,提问作者g.pickardou

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:31:49