关于tensorflow 用于线性回归及MNIST 数字识别中的一些思考及补充

一开始按照里面的例子输入并验证了下,结果还比较符合预期,但是前后又看了下原理及代码,怎么没有看到这些权重及偏置参数被不断更新(训练)呢?

我自己的理解就是,神经网络主要是建立模型,这个模型有很多参数需要训练,但是在线性回归逻辑回归的两篇文章中,并没有直接显示如何去更新这些参数。

如线性回归中,是这么写的:

update_weights =tf.train.GradientDescentOptimizer(learning_rate).minimize(loss)

逻辑回归中,是这么写的:

optimizer =tf.train.MomentumOptimizer(learning_rate, 0.9).minimize(loss,global_step=batch)

 

实际上,对于线性回归里的参数更新,他们隐含在函数实现里,

如:update_weights =tf.train.GradientDescentOptimizer(learning_rate).minimize(loss)

真正分解应该是下面这个样子,这样看起来就比较直观了!

#Change the weights by subtracting derivative with respect to that weight

    loss = 0.5 *tf.reduce_sum(tf.multiply(yerror, yerror))

    gradient = tf.reduce_sum(tf.transpose(tf.multiply(input,yerror)), 1, keep_dims=True)

    update_weights = tf.assign_sub(weights,learning_rate * gradient)

 

而在tensorflow 平台下面,这些weights and bias又是如何传入的,

正如这篇stackoverflow 里的问题一样,

TensorflowGradientDescentOptimizer - how does it connect to tf.Variables?

How doestensorflow know I want it to update W and b? Does it just see that those are the only Variables in thesession?

It takes them from tf.trainable_variables() which includes all variables created with trainable=True flag (the default)

 

这样终于搞明白,这些参数是怎么得到更新及如何传人到这些黑盒子函数里的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值