第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. 终于把XGBoost总结写出来了!
  2. 谈几个初学者混淆不清的问题
  3. ubuntu20更换节点_Ubuntu 20.04 apt 更换国内源的实现方法
  4. 微信OAuth2.0网页授权设置一个域名需多个域名使用的问题
  5. java求小数高精度_浅谈Java中的高精度整数和高精度小数
  6. 2853: 小A的游戏昵称(郑轻oj)
  7. base32解码工具_[随波逐流]CTF编码工具 V1.0
  8. linxu命令个人使用总结
  9. 冬日暖阳!网易大数据应用与分析实践分享沙龙【北京站 12.16】
  10. 商品规格参数数据库设计
  11. 皮皮胡位置设定服务器,逆水寒买橘子给皮皮寒任务完成方法
  12. HBuilder X 未检测到手机或模拟器(安卓端)
  13. dedecms 织梦配置 手机 wap 站点,并绑定二级域名
  14. Java工程师简历范文大学生,最全Java知识总结
  15. 怎么让俩张图片在一行_壁纸文案 | 我们俩不会道别
  16. vue:element ui分页改变pageSize,触发两次回调请求
  17. 搭建Redis服务器: 设置变量school,值为tarena 查看变量school的值
  18. 初识esp8266与在Arduino的环境配置
  19. ProcessOn思维导图插入LaTeX数学公式初体验
  20. 服务器租用要考虑哪些因素

热门文章

  1. c语言设计基础张小毅答案,C语言程序设计基础
  2. 利用机器学习为广告生成有说服力的面孔
  3. 韦德之道---说一说詹韦连线
  4. 地图location定位
  5. Python数据可视化之折线图
  6. 大数定理的MATLAB编程,用MATLAB模拟大数定律和中心极限定理
  7. 独立站服饰卖家DTC品牌出海案例
  8. Python网络与并发编程 01 Socket编程
  9. ROS turtlesim小乌龟的使用与分析
  10. 使用Java校验【统一社会信用代码】的真假