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

TensorFlow中相同输入下y_pred是否使用更新后权重的咨询

关于TensorFlow线性回归中权重状态的问题解答

嘿,这个问题问到点子上了,刚好涉及TensorFlow里变量状态管理的核心逻辑,我来给你掰扯清楚:

首先得明确:TensorFlow里的变量(比如你用tf.layers.Dense创建的权重和偏置)状态是保存在Session实例里的,它的取值会随着你执行的操作动态变化,不是固定不变的。

针对你的问题,分两种情况来看:

  • 如果在sess.run(init)之后,你没有执行任何更新变量的操作:
    这时候不管你运行多少次y_pred,用的都是初始化时的权重。毕竟init就是把变量设置成初始随机值(或者你指定的初始值),没做任何改动的话,变量状态自然不会变。

  • 如果在init之后,你运行了训练相关的操作(比如优化器的minimize操作):
    比如你补全代码后会有类似这样的逻辑:

    loss = tf.losses.mean_squared_error(y_true, y_pred)
    optimizer = tf.train.GradientDescentOptimizer(0.01)
    train_op = optimizer.minimize(loss)
    # 运行训练步骤,更新权重
    sess.run(train_op, feed_dict={x: [[2.0]], y_true: [[-1.0]]})
    

    这时候每次运行train_op,都会根据loss反向更新linear_model里的权重。之后再运行y_pred,用的就是更新后的权重了。

额外补充两个关键点:

  • 只要你的Session没有关闭,变量的状态就会一直保留。比如你训练了10轮,权重更新了10次,之后再跑y_pred,用的就是第10轮更新后的结果。
  • 如果你想回到初始权重,必须重新执行sess.run(init),这会把所有变量重置回初始化状态。

举个直观的小例子:

# 初始化后第一次跑y_pred
initial_pred = sess.run(y_pred, feed_dict={x: [[1.0]]})
print(initial_pred)  # 输出是随机的初始值,比如大概[[0.23]]

# 跑一次训练
sess.run(train_op, feed_dict={x: [[1.0]], y_true: [[0.0]]})

# 再跑y_pred
updated_pred = sess.run(y_pred, feed_dict={x: [[1.0]]})
print(updated_pred)  # 输出会更接近目标值0.0,比如[[0.19]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:29:07