PyTorch 深度学习实践 第3讲
第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讲相关推荐
- PyTorch 深度学习实践 第13讲
PyTorch 深度学习实践 第13讲 引言 代码 结果 引言 近期学习了B站 刘二大人的PyTorch深度学习实践,传送门PyTorch 深度学习实践--循环神经网络(高级篇),感觉受益匪浅,发现网 ...
- PyTorch 深度学习实践 第4讲
第4讲 反向传播back propagation 源代码 B站 刘二大人 ,传送门PyTroch 深度学习实践--反向传播 如果需安装PyTorch,传送门 PyTorch深度学习快速入门教程 传送 ...
- PyTorch 深度学习实践 第3讲 反向传播
B站 刘二大人: ch3--反向传播(back propagation) 传送门:https://www.bilibili.com/video/BV1Y7411d7Ys?p=4 一.补充知识: 1. ...
- 《PyTorch深度学习实践》06 逻辑斯蒂回归 代码
视频:06.逻辑斯蒂回归_哔哩哔哩_bilibili 参考文章:pytorch 深度学习实践 第6讲 逻辑斯蒂回归_会游泳的小雁的博客-CSDN博客 网络模型的基本框架 1步骤: 1.Prepare ...
- 【PyTorch深度学习实践 | 刘二大人】B站视频教程笔记
资料 [参考:<PyTorch深度学习实践>完结合集_哔哩哔哩_bilibili] [参考 分类专栏:PyTorch 深度学习实践_错错莫的博客-CSDN博客] 全[参考 分类专栏:PyT ...
- PyTorch 深度学习实践 GPU版本B站 刘二大人第11讲卷积神经网络(高级篇)GPU版本
第11讲 卷积神经网络(高级篇) GPU版本源代码 原理是基于B站 刘二大人 :传送门PyTorch深度学习实践--卷积神经网络(高级篇) 这篇基于博主错错莫:传送门 深度学习实践 第11讲博文 仅在 ...
- 《PyTorch 深度学习实践》第10讲 卷积神经网络(基础篇)
文章目录 1 卷积层 1.1 torch.nn.Conv2d相关参数 1.2 填充:padding 1.3 步长:stride 2 最大池化层 3 手写数字识别 该专栏内容为对该视频的学习记录:[&l ...
- 【Pytorch深度学习实践】B站up刘二大人之SoftmaxClassifier-代码理解与实现(8/9)
这是刘二大人系列课程笔记的倒数第二个博客了,介绍的是多分类器的原理和代码实现,下一个笔记就是basicCNN和advancedCNN了: 写在前面: 这节课的内容,主要是两个部分的修改: 一是数据集: ...
- 【Pytorch深度学习实践】B站up刘二大人课程笔记——目录与索引(已完结)
从有代码的课程开始讨论 [Pytorch深度学习实践]B站up刘二大人之LinearModel -代码理解与实现(1/9) [Pytorch深度学习实践]B站up刘二大人之 Gradient Desc ...
最新文章
- 终于把XGBoost总结写出来了!
- 谈几个初学者混淆不清的问题
- ubuntu20更换节点_Ubuntu 20.04 apt 更换国内源的实现方法
- 微信OAuth2.0网页授权设置一个域名需多个域名使用的问题
- java求小数高精度_浅谈Java中的高精度整数和高精度小数
- 2853: 小A的游戏昵称(郑轻oj)
- base32解码工具_[随波逐流]CTF编码工具 V1.0
- linxu命令个人使用总结
- 冬日暖阳!网易大数据应用与分析实践分享沙龙【北京站 12.16】
- 商品规格参数数据库设计
- 皮皮胡位置设定服务器,逆水寒买橘子给皮皮寒任务完成方法
- HBuilder X 未检测到手机或模拟器(安卓端)
- dedecms 织梦配置 手机 wap 站点,并绑定二级域名
- Java工程师简历范文大学生,最全Java知识总结
- 怎么让俩张图片在一行_壁纸文案 | 我们俩不会道别
- vue:element ui分页改变pageSize,触发两次回调请求
- 搭建Redis服务器: 设置变量school,值为tarena 查看变量school的值
- 初识esp8266与在Arduino的环境配置
- ProcessOn思维导图插入LaTeX数学公式初体验
- 服务器租用要考虑哪些因素