当前位置: 首页 > wzjs >正文

做网站内页图片尺寸广西百度seo

做网站内页图片尺寸,广西百度seo,商务酒店网站模板,南昌做网站哪家好07.自动求导(与课程对应) 1、导入torch import torch 2、假设我们想对函数 y 2x.Tx,就是 2乘x的内积,关于列向量x求导,也就是4x x torch.arange(4.0) # (1)创建一个列向量 x print("…

07.自动求导(与课程对应)

1、导入torch

import torch

2、假设我们想对函数 y = 2x.Tx,就是 2乘x的内积,关于列向量x求导,也就是4x

x = torch.arange(4.0)  # (1)创建一个列向量 x
print("x:", x)
x.requires_grad_(True)  # (2)在我们计算 y 关于 x 的梯度之前,我们需要一个地方来存储梯度
# 等价于:x = torch.arange(4.0, requires_grad=True)
x.grad  # 默认值是None
y = 2 * torch.dot(x, x)  # (3)现在计算 y
print("y:", y)
y.backward()  # (4)通过调用反向传播函数来自动计算 y 关于 x 每个分量的梯度
x.grad  # (5)求完导数之后,通过 x.grad 来访问求完的导数
print("x.grad == 4*x:", x.grad == 4*x)  # (6)验证求导是否正确

运行结果:

3、现在让我们计算 x 的另一个函数,续上边

x.grad.zero_()  # (1)在默认情况下,pytorch会累积梯度,我们需要清除之前的值;pytorch里下划线表示函数重写我的内容,此处代码表示把0写入到梯度里面
y = x.sum()
y.backward()
print("x.grad:", x.grad)

运行结果:

4、对非标量调用 backward 需要传入一个 gradient 参数,该参数指定微分函数

x.grad.zero_()
y = x * x
y.sum().backward()  # 深度学习中,我们的目的不是计算微分矩阵,而是批量中每个样本单独计算的偏导数之和
print("x.grad:", x.grad)

运行结果:

5、将某些计算移动到记录的计算图之外

x.grad.zero_()
y = x * x
u = y.detach()  # 把 y 当作一个常数,而不是关于 x 的函数
z = u * x
z.sum().backward()
print("x.grad == u:", x.grad == u)x.grad.zero_()
y.sum().backward()  # 直接 y 对 x 求导
print("x.grad == 2 * x:", x.grad == 2 * x)

运行结果:

6、即使构建函数的计算图需要通过python控制流(例如,条件、循环或任意函数调用),我们仍然可以计算得到的变量的梯度

def f(a):b = a * 2while b.norm() < 1000:b = b * 2if b.sum() > 0:c = belse:c = 100 * breturn ca = torch.randn(size=(), requires_grad=True)  # a是个随机数,size=()代表是标量,requires_grad=True需要存储梯度
d = f(a)
d.backward()
print("d.grad:", a.grad == d / a)

运行结果:

7、完整代码:

import torch# 1、假设我们想对函数 y = 2x.Tx,就是 2乘x的内积,关于列向量x求导,就是4x
x = torch.arange(4.0)  # (1)创建一个列向量 x
print("x:", x)
x.requires_grad_(True)  # (2)在我们计算 y 关于 x 的梯度之前,我们需要一个地方来存储梯度
# 等价于:x = torch.arange(4.0, requires_grad=True)
x.grad  # 默认值是None
y = 2 * torch.dot(x, x)  # (3)现在计算 y
print("y:", y)
y.backward()  # (4)通过调用反向传播函数来自动计算 y 关于 x 每个分量的梯度
x.grad  # (5)求完导数之后,通过 x.grad 来访问求完的导数
print("x.grad == 4*x:", x.grad == 4*x)  # (6)验证求导是否正确# 2、现在让我们计算 x 的另一个函数,续上边
x.grad.zero_()  # (1)在默认情况下,pytorch会累积梯度,我们需要清除之前的值;pytorch里下划线表示函数重写我的内容,此处代码表示把0写入到梯度里面
y = x.sum()
y.backward()
print("x.grad:", x.grad)# 3、对非标量调用 backward 需要传入一个 gradient 参数,该参数指定微分函数
x.grad.zero_()
y = x * x
y.sum().backward()  # 深度学习中,我们的目的不是计算微分矩阵,而是批量中每个样本单独计算的偏导数之和
print("x.grad:", x.grad)# 4、将某些计算移动到记录的计算图之外
x.grad.zero_()
y = x * x
u = y.detach()  # 把 y 当作一个常数,而不是关于 x 的函数
z = u * x
z.sum().backward()
print("x.grad == u:", x.grad == u)x.grad.zero_()
y.sum().backward()  # 直接 y 对 x 求导
print("x.grad == 2 * x:", x.grad == 2 * x)# 即使构建函数的计算图需要通过python控制流(例如,条件、循环或任意函数调用),我们仍然可以计算得到的变量的梯度
def f(a):b = a * 2while b.norm() < 1000:b = b * 2if b.sum() > 0:c = belse:c = 100 * breturn ca = torch.randn(size=(), requires_grad=True)  # a是个随机数,size=()代表是标量,requires_grad=True需要存储梯度
d = f(a)
d.backward()
print("d.grad:", a.grad == d / a)

如果此文章对您有所帮助,那就请点个赞吧,收藏+关注 那就更棒啦,十分感谢!!!

http://www.dtcms.com/wzjs/154520.html

相关文章:

  • 商城网站建设多少钱网站推广平台
  • 运用django做网站免费二级域名建站
  • 襄阳网络公司 网站建设2345网址导航电脑版
  • 搜索网站 模板百度宣传做网站多少钱
  • 16岁学生免费开网店广州优化疫情防控举措
  • 青岛市专业做网站的吗福州seo按天付费
  • 陕西百威建设监理有限司网站免费推广方法有哪些
  • 关键字查询我的网站怎么做保定百度推广联系电话
  • 婚庆网站建设策划案费用预算如何做外贸网站的推广
  • 合肥做双语网站网站发布与推广方式
  • wordpress跳转链接插件汉化北京seo营销公司
  • 网站开发价格表公司网站建设平台
  • 网站404设置小红书怎么推广引流
  • php制作网站开发建站cms
  • 网络编程技术清华大学出版社答案关键词优化排名工具
  • 网站建设的源代码网络推广属于什么行业
  • 网站官网认证加v怎么做关键词seo排名怎么样
  • 美食网站建设规划书需求分析北京seo
  • 中国摄影师个人网站设计大数据智能营销
  • 网络营销客户的心里特征网络seo优化平台
  • 有哪些好的网站建设搜索引擎优化自然排名的优点
  • 四川建设网站塔吊百度手机版
  • 微网站 html百度论坛发帖
  • 网站建设客服专员搜索关键词排名优化
  • 不属于网站后期维护常用的关键词有哪些
  • 政府网站建设的不足百度搜索图片
  • 抓取网站访问量搜索引擎优化的七个步骤
  • 同一个服务器做两个网站百度 指数
  • 移动网络服务电话深圳排名seo
  • 宝塔区政府门户网站集约化建设中标权威seo技术