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

深建市住房和城乡建设局网站学做网站论坛

深建市住房和城乡建设局网站,学做网站论坛,域名查询网站信息,如何制作个人网页最简单的方法通过反向传播进行自动求梯度1-requires_grad问题2-梯度3- detach() 和 with torch.no_grad(#xff09;4- Tensor.data.requires_gradPyTorch提供的autograd包能够根据输入和前向传播过程自动构建计算图#xff0c;并执行反向传播. 1-requires_grad问题 requires_gradTrue … 通过反向传播进行自动求梯度1-requires_grad问题2-梯度3- detach() 和 with torch.no_grad(4- Tensor.data.requires_gradPyTorch提供的autograd包能够根据输入和前向传播过程自动构建计算图并执行反向传播. 1-requires_grad问题 requires_gradTrue 开始追踪(track)在其上的所有操作这样就可以利用链式法则进行梯度传播了,完成计算后可以调用.backward()来完成所有梯度计算。默认 requires_grad False 完成计算后可以调用**.backward()来完成所有梯度计算。此Tensor的梯度将累积到.grad**属性中。 #x是直接创建的所以它没有grad_fn, 而 x torch.ones(2, 2, requires_gradTrue) print(x)#tensor([[1., 1.],[1., 1.]], requires_gradTrue) print(x.grad_fn)#None#y是通过一个加法操作创建的所以它有一个为的grad_fn。 y x 2 print(y)#tensor([[3., 3.],[3., 3.]], grad_fnAddBackward) print(y.grad_fn)#AddBackward object at 0x1100477b8#打印是否有叶子节点 print(x.is_leaf, y.is_leaf) # True False若开始没有设置requires_grad 属性可通过 .requires_grad_()来用in-place的方式改requires_grad属性 a torch.randn(2, 2) # 缺失情况下默认 requires_grad False a ((a * 3) / (a - 1)) print(a.requires_grad) # False a.requires_grad_(True) print(a.requires_grad) # True b (a * a).sum() print(b.grad_fn)#SumBackward0 object at 0x118f50cc02-梯度 标量标量就是一个数字。标量也称为0维数组 向量向量是一组标量组成的列表。向量也称为1维数组。 矩阵矩阵是由一组向量组成的集合。矩阵也称为2维数组。 张量张量是矩阵的推广可以用来描述N维数据 注意在y.backward()时如果y是标量则不需要为backward()传入任何参数否则需要传入一个与y同形的Tensor out.backward() # 等价于 out.backward(torch.tensor(1.)) 反向转播#求导 x torch.tensor([1.0, 2.0, 3.0, 4.0], requires_gradTrue) y 2 * x z y.view(2, 2) print(z)#tensor([[2., 4.],[6., 8.]], grad_fnViewBackward)现在 z 不是一个标量所以在调用backward时需要传入一个和z同形的权重向量进行加权求和得到一个标量。 v torch.tensor([[1.0, 0.1], [0.01, 0.001]], dtypetorch.float) z.backward(v) print(x.grad)#tensor([2.0000, 0.2000, 0.0200, 0.0020]) x.grad是和x同形的张量3- detach() 和 with torch.no_grad( 两种方式中断梯度追踪无法进行梯度链式法则梯度传播 1-detach() 将其从追踪记录中分离出来这样就可以防止将来的计算被追踪这样梯度就传不过去了 2-with torch.no_grad() 将不想被追踪的操作代码块包裹起来这种方法在评估模型的时候很常用因为在评估模型时我们并不需要计算可训练参数requires_gradTrue的梯度。 x torch.tensor(1.0, requires_gradTrue) y1 x ** 2 with torch.no_grad():y2 x ** 3 y3 y1 y2print(x.requires_grad)#true print(y1, y1.requires_grad) #tensor(1., grad_fnPowBackward0) True print(y2, y2.requires_grad) # False print(y3, y3.requires_grad) # tensor(2., grad_fnThAddBackward)Truey3.backward()#y2被包裹 所以y2有关的梯度是不会回传的 结果只是y1 对x的梯度 print(x.grad)#tensor(2.)#使用y2的传播会报错 #RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn4- Tensor.data.requires_grad 当你想要修改tensor的数值但是又不希望被autograd记录即不会影响反向传播那么我么可以对tensor.data进行操作。 x torch.ones(1,requires_gradTrue)print(x.data) # tensor([1.]) #还是一个tensor print(x.data.requires_grad) #False #但是已经是独立于计算图之外y 2 * x x.data * 100 # 只改变了值不会记录在计算图所以不会影响梯度传播y.backward()#tensor([100.], requires_gradTrue) print(x) # 更改data的值也会影响tensor的值 print(x.grad)#tensor([2.])
http://www.w-s-a.com/news/717923/

相关文章:

  • 梧州网站建设有哪些九江网站建设优化
  • APP网站建设开发企业发展英文seo招聘
  • 临海市住房和城乡建设规划局网站高校图书馆网站的建设方案
  • 建立门户网站张店易宝网站建设
  • wordpress中英文站点厦门seo顾问屈兴东
  • 邯郸网站建设项目重庆网站备案系统
  • 网站导航容易做黄冈网站建设报价
  • 美橙互联建站网站被截止徐州网站建站
  • 网站班级文化建设视频深圳企业网页设计公司
  • 钦州网站建设公司做宣传网站买什么云服务器
  • 58同城有做网站wordpress怎么改标题和meta
  • 安通建设有限公司网站东莞地铁app
  • 群晖nas做网站滨州教育平台 网站建设
  • 住房城市乡建设部网站装修平台有哪些
  • 小米网站 用什么做的深圳广告公司前十强
  • 勤哲网站开发视频瑞安 网站建设培训
  • 有个蓝色章鱼做标志的网站高端的网站建设怎么做
  • 建站网址导航hao123html网页设计实验总结
  • 西宁市网站建设价格丽水集团网站建设
  • 长宁怎么做网站优化好本机怎么放自己做的网站
  • 诚信网站备案中心网站字体怎么设置
  • 企业网站建设费是无形资产吗佛山网站建设哪个好点
  • 网站建设就业方向国开行网站毕业申请怎么做
  • 创建一个网站的费用wordpress 4.0 安装
  • 会员登录系统网站建设dw软件是做什么用的
  • 手机网站被做跳转长沙网上购物超市
  • 网站建设中网站需求分析设计网站推荐html代码
  • 容易收录的网站台州汇客网站建设
  • 企业网站源码百度网盘下载网站备案号如何查询密码
  • 个人网站建设课程宣传栏制作效果图