IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> Week1:[任务三] 第二节 autograd与逻辑回归 -> 正文阅读

[数据结构与算法]Week1:[任务三] 第二节 autograd与逻辑回归

【目录】

  • 自动求导系统

  • 逻辑回归?

1、自动求导系统

  • torch.autograd.backward()方法

张量中的y.backward方法实际调用的是torch.autograd.backward()方法

同一个张量反向传播的迭代,需要将y.backward(retain_graph)设置为True

  • tensors为用于求导的张量,如loss;
  • retain_graph用于保存计算图,因为pytorch为动态图机制,每次运算后都会释放掉,如果想要迭代使用计算图,需要将其置为true;
  • create_graph创建导数的计算图,通常用于高阶求导,如二阶、三阶;
  • grad_tensors:多梯度权重设置,当有多个loss需要计算梯度时,需要设置各个loss的权重;
#多权重求loss梯度
import torch

w = torch.tensor([1.],requires_grad = True)
x = torch.tensor([2.],requires_grad = True)

a = torch.add(w,x)
b = torch.add(w,1)
y0 = torch.mul(a,b)
y1 = torch.add(a,b)

loss = torch.cat([y0,y1],dim = 0)#拼接
print(loss)
grad_tensors = torch.tensor([1.,1.])

loss.backward(gradient = grad_tensors)#y0对w的梯度*权重+y1对w的梯度*权重
print(w.grad)


#运行结果输出
runfile('C:/Users/cheny/Desktop/untitled0.py', wdir='C:/Users/cheny/Desktop')
tensor([6., 5.], grad_fn=<CatBackward>)
tensor([7.])
  • torch.autograd.grad()方法

output为Y,input为X,求取的是Y对X的偏导,即求X的梯度

下划线表示原地操作in-place操作,在原始地址上直接进行改变,例如a+=1,a的地址没有变化

#求高阶导数,create_graph = True设置
import torch
x = torch.tensor([3.],requires_grad=True)
y = torch.pow(x,2)#y=x2

grad_1 = torch.autograd.grad(y,x,create_graph=True)#一阶导数为y=2x=6
print(grad_1)

grad_2 = torch.autograd.grad(grad_1[0],x)#二阶导数为y=2
print(grad_2)


#运行结果输出
runfile('C:/Users/cheny/Desktop/untitled0.py', wdir='C:/Users/cheny/Desktop')
(tensor([6.], grad_fn=<MulBackward0>),)
(tensor([2.]),)

叶子张量不能执行in-place操作,因为前向传播保存的地址数据不能有变化,否则反向传播会出错

注意:

  • 梯度在自动求导过程中不会自动清零,每次都会自动叠加上去,需要手动清零。e.g w.grad.zero_()进行清零
  • 依赖于叶子结点的结点,requires_grad默认为True(是否需要梯度)
  • 叶子结点不可执行in-place
#梯度不会自动清零,需要手动清零
import torch

w = torch.tensor([1.],requires_grad = True)
x = torch.tensor([2.],requires_grad = True)

for i in range(2):
    a = torch.add(w,x)
    b = torch.add(w,1)
    y = torch.mul(a,b)
    
    y.backward()
    print(w.grad)
    
    #w.grad.zero_() #手动清空

#运行结果输出
runfile('C:/Users/cheny/Desktop/untitled0.py', wdir='C:/Users/cheny/Desktop')
tensor([5.])
tensor([10.])

2、逻辑回归

  • sigmoid函数的作用就是将输入的数据映射到0-1之间,输出的Y就能用来做二分类

  • 逻辑回归是在线性回归的基础上增加了一个激活函数,增加激活函数是为了更好的描述,用概率来描述,同时更好的拟合,避免梯度消失现象

  • 逻辑回归又叫对数几率回归,几率即为y/1-y(概率取值y除以1-y)表示样本x为正样本的可能性。线性回归用wx+b去拟合Y,而逻辑回归是用wx+b去拟合一个对数几率

  • 机器学习训练步骤(五步)

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-08-08 11:34:33  更:2021-08-08 11:35:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 19:25:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码