首页 > 其他分享 >PyTorch 深度学习实践第四讲(反向传播)

PyTorch 深度学习实践第四讲(反向传播)

时间:2022-12-21 19:31:11浏览次数:39  
标签:w1 item 梯度 grad PyTorch 反向 计算 深度 data

简单回顾

关于w的更新

PyTorch 深度学习实践第四讲(反向传播)_类型转换

神经网络原理

PyTorch 深度学习实践第四讲(反向传播)_反向传播_02

备注:最后加入惩罚项

反向传播原理

PyTorch 深度学习实践第四讲(反向传播)_类型转换_03

备注:后期对权重进行更新,先进行前馈过程,再反向

相应代码

import torch

x_data = [1.0,2.0,3.0]
y_data = [2.0,4.0,6.0]

w = torch.Tensor([1.0])
w.requires_grad = True #需要计算梯度,默认是不计算的

def forward(x):
return x * w #进行Tensor与Tensor之间的数乘,对x进行自动类型转换

def loss(x,y):
y_pred = forward(x)
return (y_pred - y) ** 2 #构建计算图

print("predict (before training)",4,forward(4).item())

for epoch in range(100):
for x,y in zip(x_data,y_data): #采用随机梯度下降
l = loss(x,y)
l.backward() #内置函数,计算梯度,存入w,自动释放计算图
print('\tgrad:',x,y,w.grad.item()) #拿出梯度中的数值,变成python中的标量
w.data = w.data - 0.01 * w.grad.data #取data,不会建立计算图
w.grad.data.zero_() #显示清零,释放之前计算的梯度

print("progress:",epoch,l.item())

print("predict (after training)",4,forward(4).item())

课后作业

import torch

x_data = [1.0,2.0,3.0]
y_data = [2.0,4.0,6.0]

w1 = torch.Tensor([1.0])
w1.requires_grad = True #需要计算梯度,默认是不计算的
w2 = torch.Tensor([1.0])
w2.requires_grad = True #需要计算梯度,默认是不计算的
b = torch.Tensor([1.0])
b.requires_grad = True #需要计算梯度,默认是不计算的


def forward(x):
return w1 * x ** 2 + w2 * x + b #进行Tensor与Tensor之间的数乘,对x进行自动类型转换

def loss(x,y):
y_pred = forward(x)
return (y_pred - y) ** 2 #构建计算图

print("predict (before training)",4,forward(4).item())

for epoch in range(100):
for x,y in zip(x_data,y_data): #采用随机梯度下降
l = loss(x,y)
l.backward() #内置函数,计算梯度,存入w,自动释放计算图
print('\tgrad:',x,y,w1.grad.item(),w2.grad.item(),b.grad.item()) #拿出梯度中的数值,变成python中的标量
w1.data = w1.data - 0.01 * w1.grad.data #取data,不会建立计算图
w2.data = w2.data - 0.01 * w2.grad.data #取data,不会建立计算图
b.data = b.data - 0.01 * b.grad.data #取data,不会建立计算图
w1.grad.data.zero_() #显示清零,释放之前计算的梯度
w2.grad.data.zero_() #显示清零,释放之前计算的梯度
b.grad.data.zero_() #显示清零,释放之前计算的梯度

print("progress:",epoch,l.item())

print("predict (after training)",4,forward(4).item())

标签:w1,item,梯度,grad,PyTorch,反向,计算,深度,data
From: https://blog.51cto.com/u_15698454/5960079

相关文章

  • PyTorch 深度学习实践(梯度下降算法)
    梯度下降上课代码importnumpyasnpimportmatplotlib.pyplotaspltx_data=[1.0,2.0,3.0]y_data=[2.0,4.0,6.0]w=1.0defforward(x):returnx*wdefcost(xs,y......
  • PyTorch 深度学习实践第二讲(线性模型)
    写在前面:B站刘二大人 ,传送门 ​​PyTorch深度学习实践——线性模型​​​​学习步骤准备数据集模型的选择和设计训练的过程(确定权重)推理和测试工作(infering) Traininglo......
  • 深度学习课程第一章重点梳理
    1.人脑的视觉机理1.1理解人脑的分层世界机理人脑视觉机理:1981年的诺贝尔医学/生理学奖,发现可视皮层是分级的人的视觉系统的信息处理是分级的。从低级的V1区提取边缘特征......
  • 求二叉树的深度
    求二叉树的深度TimeLimit:1000MSMemorylimit:65536K题目描述已知一颗二叉树的中序遍历序列和后序遍历序列,求二叉树的深度。输入T组数据。每组数据包括两个长......
  • Web集群案例实战 -- Nginx 反向代理 -- 案例实战
    Nginx反向代理--案例实战​​前言​​前言本环境是基于Centos7.8系统构建Nginx学习环境具体构建,请参考​​Nginx-1.18.0环境部署​​环境准备rolehostipnginx-vers......
  • [js] 树结构查找节点,深度优先
    查找节点其实就是一个遍历的过程,遍历到满足条件的节点则返回,遍历完成未找到则返回null。类似数组的find方法,传入一个函数用于判断节点是否符合条件,代码如下:functiontreeFin......
  • 深度生成模型
    邱锡鹏NNDL学习笔记首先应明白什么是生成模型。了解生成模型的两个模块:(概率)密度估计,生成样本(采样)。在密度估计或生成样本的时候,采用神经网络的方法,就是深度生成模型。......
  • 数智管理新动能,深度解读《2022中国指标中台市场研究报告》
    在经济增速放缓的大背景下,激烈的市场竞争,多变的消费需求以及日新月异的技术创新为企业带来高风险的生存环境,疫情的爆发又使企业的生存空间进一步恶化。企业的未来充满不确定......
  • PyTorch 深度学习实践第一讲
    写在前面:B站刘二大人 传送门​​Pytorch深度学习实践第一讲​​预备知识线性代数和概率论与数理统计(至少知道分布)Python(了解面向对象、类)引言:HumanIntelligence推理能力......
  • Powerdesigner反向Postgresql14常见问题
    一、数据库连接powerdesigner需要安装32位jdk,同时到Tool->GeneralOptions中设置32位jdk的路径  配置数据库连接:选择菜单Database->UpdateModelFromDataba......