第3讲  梯度下降法 源代码

B站 刘二大人 ,传送门PyTorch 深度学习实践 梯度下降法

深度学习算法中,并没有过多的局部最优点。

import matplotlib.pyplot as plt# prepare the training set
x_data = [1.0, 2.0, 3.0]
y_data = [2.0, 4.0, 6.0]# initial guess of weight
w = 1.0# define the model linear model y = w*x
def forward(x):return x*w#define the cost function MSE
def cost(xs, ys):cost = 0for x, y in zip(xs,ys):y_pred = forward(x)cost += (y_pred - y)**2return cost / len(xs)# define the gradient function  gd
def gradient(xs,ys):grad = 0for x, y in zip(xs,ys):grad += 2*x*(x*w - y)return grad / len(xs)epoch_list = []
cost_list = []
print('predict (before training)', 4, forward(4))
for epoch in range(100):cost_val = cost(x_data, y_data)grad_val = gradient(x_data, y_data)w-= 0.01 * grad_val  # 0.01 learning rateprint('epoch:', epoch, 'w=', w, 'loss=', cost_val)epoch_list.append(epoch)cost_list.append(cost_val)print('predict (after training)', 4, forward(4))
plt.plot(epoch_list,cost_list)
plt.ylabel('cost')
plt.xlabel('epoch')
plt.show() 

随机梯度下降法 源代码

随机梯度下降法在神经网络中被证明是有效的。效率较低(时间复杂度较高),学习性能较好。

随机梯度下降法和梯度下降法的主要区别在于:

1、损失函数由cost()更改为loss()。cost是计算所有训练数据的损失,loss是计算一个训练数据的损失。对应于源代码则是少了两个for循环。

2、梯度函数gradient()由计算所有训练数据的梯度更改为计算一个训练数据的梯度。

3、本算法中的随机梯度主要是指,每次拿一个训练数据来训练,然后更新梯度参数。本算法中梯度总共更新100(epoch)x3 = 300次。梯度下降法中梯度总共更新100(epoch)次。

import matplotlib.pyplot as pltx_data = [1.0, 2.0, 3.0]
y_data = [2.0, 4.0, 6.0]w = 1.0def forward(x):return x*w# calculate loss function
def loss(x, y):y_pred = forward(x)return (y_pred - y)**2# define the gradient function  sgd
def gradient(x, y):return 2*x*(x*w - y)epoch_list = []
loss_list = []
print('predict (before training)', 4, forward(4))
for epoch in range(100):for x,y in zip(x_data, y_data):grad = gradient(x,y)w = w - 0.01*grad    # update weight by every grad of sample of training setprint("\tgrad:", x, y,grad)l = loss(x,y)print("progress:",epoch,"w=",w,"loss=",l)epoch_list.append(epoch)loss_list.append(l)print('predict (after training)', 4, forward(4))
plt.plot(epoch_list,loss_list)
plt.ylabel('loss')
plt.xlabel('epoch')
plt.show() 

PyTorch 深度学习实践 第3讲相关推荐

  1. PyTorch 深度学习实践 第13讲

    PyTorch 深度学习实践 第13讲 引言 代码 结果 引言 近期学习了B站 刘二大人的PyTorch深度学习实践,传送门PyTorch 深度学习实践--循环神经网络(高级篇),感觉受益匪浅,发现网 ...

  2. PyTorch 深度学习实践 第4讲

    第4讲  反向传播back propagation 源代码 B站 刘二大人 ,传送门PyTroch 深度学习实践--反向传播 如果需安装PyTorch,传送门 PyTorch深度学习快速入门教程 传送 ...

  3. PyTorch 深度学习实践 第3讲 反向传播

    B站 刘二大人: ch3--反向传播(back propagation) 传送门:https://www.bilibili.com/video/BV1Y7411d7Ys?p=4 一.补充知识: 1. ...

  4. 《PyTorch深度学习实践》06 逻辑斯蒂回归 代码

    视频:06.逻辑斯蒂回归_哔哩哔哩_bilibili 参考文章:pytorch 深度学习实践 第6讲 逻辑斯蒂回归_会游泳的小雁的博客-CSDN博客 网络模型的基本框架 1步骤: 1.Prepare ...

  5. 【PyTorch深度学习实践 | 刘二大人】B站视频教程笔记

    资料 [参考:<PyTorch深度学习实践>完结合集_哔哩哔哩_bilibili] [参考 分类专栏:PyTorch 深度学习实践_错错莫的博客-CSDN博客] 全[参考 分类专栏:PyT ...

  6. PyTorch 深度学习实践 GPU版本B站 刘二大人第11讲卷积神经网络(高级篇)GPU版本

    第11讲 卷积神经网络(高级篇) GPU版本源代码 原理是基于B站 刘二大人 :传送门PyTorch深度学习实践--卷积神经网络(高级篇) 这篇基于博主错错莫:传送门 深度学习实践 第11讲博文 仅在 ...

  7. 《PyTorch 深度学习实践》第10讲 卷积神经网络(基础篇)

    文章目录 1 卷积层 1.1 torch.nn.Conv2d相关参数 1.2 填充:padding 1.3 步长:stride 2 最大池化层 3 手写数字识别 该专栏内容为对该视频的学习记录:[&l ...

  8. 【Pytorch深度学习实践】B站up刘二大人之SoftmaxClassifier-代码理解与实现(8/9)

    这是刘二大人系列课程笔记的倒数第二个博客了,介绍的是多分类器的原理和代码实现,下一个笔记就是basicCNN和advancedCNN了: 写在前面: 这节课的内容,主要是两个部分的修改: 一是数据集: ...

  9. 【Pytorch深度学习实践】B站up刘二大人课程笔记——目录与索引(已完结)

    从有代码的课程开始讨论 [Pytorch深度学习实践]B站up刘二大人之LinearModel -代码理解与实现(1/9) [Pytorch深度学习实践]B站up刘二大人之 Gradient Desc ...

最新文章

  1. SEO优化如何“搭乘”线上营销推广“列车”?
  2. 快速在PowerPoint文档中添加图表
  3. relative会脱离文档流吗_脱离华为之后,高通伸来援手,荣耀40会搭载骁龙888吗?...
  4. 潘淳的苏州.NET俱乐部成立有感!附我的录音
  5. Springboot中关于跨域问题的一种解决方法
  6. WPS快速截图的方法
  7. 获CNNVD感谢信!知道创宇以专业漏洞研究能力支撑“漏洞通报”业务
  8. ppt 制作海报 导出高分辨率图片
  9. 电子邮件传输协议原理简介
  10. 错误:java 找不到符号
  11. 渗透测试-网页接口加密暴破
  12. Android的界面1080,安卓1080P界面设计规范解读
  13. C语言————输出It‘s a computer中的computer
  14. Ubuntu 20.04LTS 搜狗输入法不显示图标
  15. WindowsPhone8 应用开发学习笔记(一)
  16. 《机器学习 公式推导与代码实现》随书PPT示例
  17. SoK: The Faults in our ASRs: An Overview of Attacks against Automatic Speech Recognition (题目过长)阅读笔记
  18. System.gc()的理解
  19. 在华为云服务器安装libreoffice软件
  20. 单点登录 ( 踢人模式 )

热门文章

  1. Transformer课程第39章:面向Knowledge-intensive任务的Transformer模型RAG的架构及完整源码实现
  2. 【Linux】下打开vim出现【E325】问题
  3. 【Python编程】九、Python文件操作
  4. linux bochs安装,ubuntu16.04上安装bochs
  5. matlab遗传算法工具箱源代码学习
  6. 关于分享,bshare分享百度分享
  7. 2018最炙手可热的行业--大数据就业方向和学习路线图详解!
  8. C++ 第17章 输入、输出和文件(iostream/ostream/fstream)
  9. 你不得不了解的深度学习知识(二)
  10. 因素负荷量(factor loadings)的理解