TensorFlow中全零参数向量为何能在多项式回归中得到非零结果
TensorFlow多项式回归:全零初始化的参数w为啥能输出非零结果?
先贴出你提到的代码:
import tensorflow as tf tf.disable_v1_behavior() def model(X, w): terms = [] for i in range(num_coeffs): #num_coeffs = 6 term = tf.multiply(w[i], tf.pow(X, i)) terms.append(term) return tf.add_n(terms) w = tf.Variable([0.]*num_coeffs, name="parameters") y_model = model(X, w) #X = tf.placeholder(tf.float32)
核心原因很简单:
w是TensorFlow的变量(Variable),全零只是它的初始值,不是固定不变的。- 做多项式回归时,你肯定还会定义损失函数(比如预测值和真实标签的均方误差)、优化器(比如梯度下降)。训练过程中,优化器会根据损失的梯度,一点点调整
w里的每个元素值——每跑一轮训练,w就会朝着能更好拟合数据的方向变化。 - 初始全零只是个中性的起点,等训练完成后,
w早就被优化成非零的拟合参数了,对应的y_model自然就是非零结果。
如果只定义模型不执行训练流程,w确实会一直保持全零,y_model也会是零,但多项式回归的完整流程必然包含参数更新环节,这才是参数从全零变为非零的关键。
内容的提问来源于stack exchange,提问作者Kyrylo Lyskov
相关产品推荐
相关产品推荐

