Tensorflow学习第九篇-梯度下降法|可训练变量|自动求导机制 2020-09-20

目录

 

一、求数值解的方法-梯度下降法

二、实现梯度下降法

三、一元线性回归Numpy实现

四、可训练变量

 五、自动求导机制-GradientTape


一、求数值解的方法-梯度下降法

 


找到极值点的速度:步长的大小决定,但是也不是越大越好

步长太小,迭代次数多,收敛慢

步长太大,引起震荡,可能无法收敛

所以这个步长的取值是否可以自动调节呢?

如上图所示,斜率与步长是呈正比例的关系的。

而斜率是可以通过某点的求导获得,然后进行迭代。


但是疑问来了,为什么迭代公式仅仅使用减号,而没有加号呢?其实我们分析发现:

在 x>0 的时候,函数的导数值是是大于零的,也就是曲线是上升趋势,因此减去导数值是朝着极值(较小的值)方向;(不用再计算两个值比较大小了)

在 x<0 的时候,是相反的道理。

二、实现梯度下降法

1、梯度下降法求解一元线性回归问题:

一元线性回归,转换成二元平方损失函数求极值的问题;二元函数使用偏导,求得各个变量的值,使得Loss损失函数最小;从而确定了函数参数。

2.当然,我们还有均方差损失函数:

注意,我们还有一个参数:学习率 \eta ;我们知道只要学习率够小,可以保证一定收敛。但过小则运算缓慢,过大则出现震荡。通常学习率 \eta 属于超参数,即学习之前已经设置,不是通过训练得到的。

三、一元线性回归Numpy实现

学习网站:https://www.bilibili.com/video/BV1D541167N9?p=62

四、可训练变量

tf.Variable()

trainalbe属性

 五、自动求导机制-GradientTape

如果想重复使用tape,加上True,运行完后使用del释放:

 多元函数求偏导数:

可以嵌套使用,进行二阶求导:

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值