学习梯度下降的几个参考资料

基本原理:吴恩达https://www.bilibili.com/video/BV1FT4y1E74V?p=10
一维梯度下降和二维梯度下降,理解梯度下降的简单应用
https://tangshusen.me/Dive-into-DL-PyTorch/#/chapter07_optimization/7.2_gd-sgd
其中的公式可以参考一下
贴上两段测试代码

"""
画出y=x^2图像,并且使用梯度下降找最低点
"""
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-10, 10, 0.1)
plt.plot(x, [i * i for i in x])
plt.xlabel('x')
plt.ylabel('y=x^2')


def grad(learn_rate):
    x = [10]
    data = 10
    temp = data
    data -= learn_rate * 2 * data
    while abs(data - temp) > 0.01:
        x.append(data)
        print(data)
        temp = data
        data -= learn_rate * 2 * data
    return x


grad_data = grad(0.1)
plt.plot(grad_data, [i ** 2 for i in grad_data],'o')
plt.show()

#多维梯度变化
#https://tangshusen.me/Dive-into-DL-PyTorch/#/chapter07_optimization/7.2_gd-sgd

learning_rate=0.1
x1,x2=-5,2

for i in range(20):#迭代20次
    x1=x1-learning_rate*2*x1
    x2=x2-learning_rate*4*x2
    print("第{}次:x1={},x2={}".format(i,x1,x2))

以下是梯度下降在网络中的实际应用,使用pytorch,还需要后续学习和补充
https://www.bilibili.com/video/BV1hE411t7RN?p=24
讲解了梯度下降优化在网络模型的初步使用方法。其他的内容质量不高

# 定义优化器
learn_rate = 1e-2
optimizer = torch.optim.SGD(net.parameters(), lr=learn_rate) 
# 优化器优化模型
optimizer.zero_grad()
loss.backward()
optimizer.step()

有一个问题不太懂,后面需要注意一下,这个网络中的net.parameters()里面的tensor表示的是什么东西。
另外有一个地方我觉得他讲错了,在视频中进行调试的时候data那个卷积层中权重的梯度发生变化并不是训练轮数的改变导致的,而是在不同的data组别中的数据不同而导致的。
关于网络中的应用后面还需要进行补充

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值