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

无锡企业网站排名优化做网站的公司经营范围怎么写

无锡企业网站排名优化,做网站的公司经营范围怎么写,app分销商城系统,擅自给公司做网站有什么责任目录 #x1f354; 梯度基本计算 1.1 单标量梯度的计算 1.2 单向量梯度的计算 1.3 多标量梯度计算 1.4 多向量梯度计算 1.5 运行结果#x1f4af; #x1f354; 控制梯度计算 2.1 控制不计算梯度 2.2 注意: 累计梯度 2.3 梯度下降优化最优解 2.4 运行结果#x1… 目录 梯度基本计算 1.1 单标量梯度的计算 1.2 单向量梯度的计算 1.3 多标量梯度计算 1.4 多向量梯度计算 1.5 运行结果 控制梯度计算 2.1 控制不计算梯度 2.2 注意: 累计梯度 2.3 梯度下降优化最优解 2.4 运行结果 梯度计算注意 3.1 detach 函数用法 3.2 detach 前后张量共享内存 3.3 运行结果 小节 学习目标 掌握梯度计算 自动微分Autograd模块对张量做了进一步的封装具有自动求导功能。自动微分模块是构成神经网络训练的必要模块在神经网络的反向传播过程中Autograd 模块基于正向计算的结果对当前的参数进行微分计算从而实现网络权重参数的更新。 梯度基本计算 我们使用 backward 方法、grad 属性来实现梯度的计算和访问. import torch 1.1 单标量梯度的计算 # y x**2 20def test01():# 定义需要求导的张量# 张量的值类型必须是浮点类型x torch.tensor(10, requires_gradTrue, dtypetorch.float64)# 变量经过中间运算f x ** 2 20# 自动微分f.backward()# 打印 x 变量的梯度# backward 函数计算的梯度值会存储在张量的 grad 变量中print(x.grad) 1.2 单向量梯度的计算 # y x**2 20 def test02():# 定义需要求导张量x torch.tensor([10, 20, 30, 40], requires_gradTrue, dtypetorch.float64)# 变量经过中间计算f1 x ** 2 20# 注意:# 由于求导的结果必须是标量# 而 f 的结果是: tensor([120., 420.])# 所以, 不能直接自动微分# 需要将结果计算为标量才能进行计算f2 f1.mean()  # f2 1/2 * x# 自动微分f2.backward()# 打印 x 变量的梯度print(x.grad) 1.3 多标量梯度计算 # y x1 ** 2 x2 ** 2 x1*x2 def test03():# 定义需要计算梯度的张量x1 torch.tensor(10, requires_gradTrue, dtypetorch.float64)x2 torch.tensor(20, requires_gradTrue, dtypetorch.float64)# 经过中间的计算y x1**2 x2**2 x1*x2# 将输出结果变为标量y y.sum()# 自动微分y.backward()# 打印两个变量的梯度print(x1.grad, x2.grad) 1.4 多向量梯度计算 def test04():# 定义需要计算梯度的张量x1 torch.tensor([10, 20], requires_gradTrue, dtypetorch.float64)x2 torch.tensor([30, 40], requires_gradTrue, dtypetorch.float64)# 经过中间的计算y x1 ** 2 x2 ** 2 x1 * x2print(y)# 将输出结果变为标量y y.sum()# 自动微分y.backward()# 打印两个变量的梯度print(x1.grad, x2.grad)if __name__ __main__:test04()1.5 运行结果 tensor(20., dtypetorch.float64) tensor([ 5., 10., 15., 20.], dtypetorch.float64) tensor(40., dtypetorch.float64) tensor(50., dtypetorch.float64) tensor([1300., 2800.], dtypetorch.float64, grad_fnAddBackward0) tensor([50., 80.], dtypetorch.float64) tensor([ 70., 100.], dtypetorch.float64)控制梯度计算 我们可以通过一些方法使得在 requires_gradTrue 的张量在某些时候计算不进行梯度计算。 import torch 2.1 控制不计算梯度 def test01():x torch.tensor(10, requires_gradTrue, dtypetorch.float64)print(x.requires_grad)# 第一种方式: 对代码进行装饰with torch.no_grad():y x ** 2print(y.requires_grad)# 第二种方式: 对函数进行装饰torch.no_grad()def my_func(x):return x ** 2print(my_func(x).requires_grad)# 第三种方式torch.set_grad_enabled(False)y x ** 2print(y.requires_grad) 2.2 注意: 累计梯度 def test02():# 定义需要求导张量x torch.tensor([10, 20, 30, 40], requires_gradTrue, dtypetorch.float64)for _ in range(3):f1 x ** 2 20f2 f1.mean()# 默认张量的 grad 属性会累计历史梯度值# 所以, 需要我们每次手动清理上次的梯度# 注意: 一开始梯度不存在, 需要做判断if x.grad is not None:x.grad.data.zero_()f2.backward()print(x.grad) 2.3 梯度下降优化最优解 def test03():# y x**2x torch.tensor(10, requires_gradTrue, dtypetorch.float64)for _ in range(5000):# 正向计算f x ** 2# 梯度清零if x.grad is not None:x.grad.data.zero_()# 反向传播计算梯度f.backward()# 更新参数x.data x.data - 0.001 * x.gradprint(%.10f % x.data)if __name__ __main__:test01()test02()test03()2.4 运行结果 True False False False tensor([ 5., 10., 15., 20.], dtypetorch.float64) tensor([ 5., 10., 15., 20.], dtypetorch.float64) tensor([ 5., 10., 15., 20.], dtypetorch.float64)梯度计算注意 当对设置 requires_gradTrue 的张量使用 numpy 函数进行转换时, 会出现如下报错: Cant call numpy() on Tensor that requires grad. Use tensor.detach().numpy() instead. 此时, 需要先使用 detach 函数将张量进行分离, 再使用 numpy 函数. 注意: detach 之后会产生一个新的张量, 新的张量作为叶子结点并且该张量和原来的张量共享数据, 但是分离后的张量不需要计算梯度。 import torch3.1 detach 函数用法 def test01():x torch.tensor([10, 20], requires_gradTrue, dtypetorch.float64)# Cant call numpy() on Tensor that requires grad. Use tensor.detach().numpy() instead.# print(x.numpy())  # 错误print(x.detach().numpy())  # 正确 3.2 detach 前后张量共享内存 def test02():x1 torch.tensor([10, 20], requires_gradTrue, dtypetorch.float64)# x2 作为叶子结点x2 x1.detach()# 两个张量的值一样: 140421811165776 140421811165776print(id(x1.data), id(x2.data))x2.data torch.tensor([100, 200])print(x1)print(x2)# x2 不会自动计算梯度: Falseprint(x2.requires_grad)if __name__ __main__:test01()test02() 3.3 运行结果 10. 20.] 140495634222288 140495634222288 tensor([10., 20.], dtypetorch.float64, requires_gradTrue) tensor([100, 200]) False小节 本小节主要讲解了 PyTorch 中非常重要的自动微分模块的使用和理解。我们对需要计算梯度的张量需要设置 requires_gradTrue 属性并且需要注意的是梯度是累计的在每次计算梯度前需要先进行梯度清零。 小言在此感谢大家的支持  顺便问一下大佬们最擅长使用的编程语言是什么呢~ 欢迎评论区讨论哦~
http://www.zqtcl.cn/news/966123/

相关文章:

  • 南昌网站建设公务手工制作代加工接单网
  • 排名好的手机网站建设你知道吗 网站
  • 网站信息组织优化成都网站制作计划
  • 网站网页背景颜色 多彩做搜狗网站点击赚钱
  • 门户网站开发 系统介绍wordpress 代码在哪
  • 石家庄网站设计建设门面设计效果图
  • 公司设计网站多少钱月子中心网站设计
  • 网站悬浮微信二维码手机端网站优化排名seo推广
  • 房地产公司网站建设乡村建设规划网站
  • 有没有做高仿手表的网站商会网站模板
  • 网站建设小组网页微博
  • org域名做商业网站弹出快捷菜单一般通过
  • wordpress模板的网站_网页字体怎么修改?网站权重怎么查询
  • 企业门户网站的建设与实现论文莲花直播
  • 做网站公司需要什么职位临沂seo代理商
  • 网站建设和发布的一般流程图wordpress 后端
  • 西安哪有学做淘宝网站html企业网站源码
  • 网站成品超市核心关键词是什么意思
  • 为什么自己花钱做的网站竟然不是自己的 (wordpress排版工具
  • 2017优惠券网站怎么做坪山网站建设特色
  • wordpress 多站点模式望江网站建设
  • 常熟网站制作哪家好平面素材设计网站
  • 网站建设客户怎么找网站建设开发软件
  • 青岛制作企业网站的公司怎么清空WordPress
  • 权重的网站所有网站302跳转百度
  • 做个淘宝客网站怎么做济南网络推广公司排名
  • 西宁网站建设优化东莞建网站公司案例
  • 建设网站iss手工活接单在家做有正规网站吗
  • 六安做网站的公司专门建立网站的公司吗
  • 西昌市建设工程管理局网站wordpress主题知更