能用张量处理就用张量,不要使用for in 跑循环,一个是容易出错,一个是比较浪费时间,应用广播机制的话去做很容易的

1.5

使用mean处理平均值

2.

在处理梯度的时候无法更改自身,因此使用的办法是with

一个简单的例子:

import torch as tt

x=tt.tensor(range(20))

y=x+3

w=tt.tensor([1.0],requires_grad=True)

b=tt.tensor([1.0],requires_grad=True)

def loss_fn(x,y,w,b):

det=0.5(y-wx-b)**2

det=det.mean()

return det

def training_loop(n_epochs, learning_rate, w,b,x, y):

for epoch in range(1, n_epochs + 1):

if w.grad is not None:

w.grad.zero_()

b.grad.zero_()

y=w*x+b

loss = loss_fn(x,y,w,b)

loss.backward()

with torch.no_grad():

w -= learning_rate * w.grad

return w,b

training_loop(10,1e-2,w,b,x,y)

这里的with是切换上下文,后面的torch.no_grad()是强制断图,在需要对叶子节点本身进行修改的时候使用

再补充一下

所谓标量y对矢量x求导,指的是,总的贡献y,对于每个分量贡献x进行求导,如果有n个x,里面代表的是,不同的x

比如卖苹果

苹果的价格是总的贡献,每个x的标度,比如口味,地址,大小是分贡献,每个Y,对应一个序列,(x1,x2,x3……)

而如果是矢量y对矢量x求导,代表的是y的每个分量对于x进行求导,需要传入一个和y相同大小的,代表y在每个方向上的权重。(一般是1,1,1但是也可以是1,2,3,权重是直接乘上去的)

retain_graph=True的意义在于不加的话,每次back时都会拆掉已经构建好的图,而第二次的时候依旧会尝试访问拆掉的图,所以会导致报错,这时候就需要这个东西

torch.autograd.grad这个函数的意义在于不用遍历全图求梯度但是图还是建了的,而且可以用来求单个梯度,但是并没有累积在其中,因此需要使用诸如:

print(torch.autograd.grad)之类的来访问,对于一次性的东西来说很方便

4.玩back(反向求导)的时候梯度会累加,这可能是因为第二次计算的结果,因此多次更新/多次反向时需要将梯度至为0

pytorch 简简单单求个值的更多相关文章

  1. ACM3 求最值

    /*2*2014.11.18*求最值*描述:给定N个整数(1<=N<=100),求出这N个数中的最大值,最小值.*输入:多组数据,第一行为一个整数N,第二行为N个不超过100的正整数,用空 ...

  2. [NOI2005]维修数列 Splay tree 区间反转,修改,求和,求最值

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1500 Description Input 输入文件的第1行包含两个数N和M,N表示初始时数 ...

  3. hdu4521-小明系列问题——小明序列(线段树区间求最值)

    题意:求最长上升序列的长度(LIS),但是要求相邻的两个数距离至少为d,数据范围较大,普通dp肯定TLE.线段树搞之就可以了,或者优化后的nlogn的dp. 代码为  线段树解法. #include ...

  4. javascript之求最值

    求最值: var selections = $("#deliveryGridSalesOrGoods").datagrid('getRows'); var costPrice = ...

  5. poj3264(线段树区间求最值)

    题目连接:http://poj.org/problem?id=3264 题意:给定Q(1<=Q<=200000)个数A1,A2,```,AQ,多次求任一区间Ai-Aj中最大数和最小数的差. ...

  6. Sql示例说明如何分组后求中间值--【叶子】

    原文:Sql示例说明如何分组后求中间值--[叶子] 这里所谓的分组后求中间值是个什么概念呢? 我举个例子来说明一下: 假设我们现在有下面这样一个表: type        name price -- ...

  7. hdu 1754 I Hate It(树状数组区间求最值)2007省赛集训队练习赛(6)_linle专场

    题意: 输入一行数字,查询第i个数到第j个数之间的最大值.可以修改其中的某个数的值. 输入: 包含多组输入数据. 每组输入首行两个整数n,m.表示共有n个数,m次操作. 接下来一行包含n个整数. 接下 ...

  8. C语言 · 求arccos值

    算法提高 7-2求arccos值   时间限制:10.0s   内存限制:256.0MB      问题描述 利用标准库中的cos(x)和fabs(x)函数实现arccos(x)函数,x取值范围是[- ...

  9. 位运算求最值 学习笔记 (待补充QAQ)

    没有什么前言?直接进入正题qwq 俩俩异或 求最值: 建trie树 O(n)枚举每个数找这个数的最值,每次反走就成,还可以剪枝一波(如果在某位已经小于ans显然可以直接return? void Ins ...

  10. [note]一类位运算求最值问题

    [note]一类位运算求最值问题 给定一些数,让你从中选出两个数a,b,每次询问下列中的一个 1.a and b的最大值 2.a xor b的最大值 3.a or b的最大值 神仙们都是FWT,小蒟蒻 ...

随机推荐

  1. 生成19位long型唯一数字id

    /** * 生成19位long型唯一数字id * @return */ public static long GetLong19UUID() { // String nanoRandom = Syst ...

  2. uniapp 扫描

    借鉴链接:https://blog.csdn.net/qq_33165549/article/details/89879435 1.扫描页面 <template> <view> ...

  3. got multiple values for keyword argument 'to_fields'

    django.db.models.fields.related.ForeignObject.__init__() got multiple values for keyword argument 't ...

  4. java8 升级 17 兼容测试 emt4j

    测试兼容性的,emt4j 在readme 里 download 节目,点击下载 https://github.com/adoptium/emt4j /root/emt4j-0.3/bin/analys ...

  5. 《Spring Boot从零开始学(视频教学版)》快速入门Spring Boot应用开发

    #好书推荐##好书奇遇季#<Spring Boot从零开始学(视频教学版)>,目前为止较好的一本Spring Boot入门书.京东当当天猫都有发售.本书配套示例代码.课件与教学视频.定价7 ...

  6. 《Python 3网络爬虫实战》示例源码免费下载

    #好书推荐##好书奇遇季#<Python 3网络爬虫实战>京东当当天猫都有发售. https://item.jd.com/12936936.html 本书配套示例源码,文后提供了下载二维码 ...

  7. k8s_使用k8s部署wordpress博客系统(一)

    系统部署流程 使⽤kubernetes部署wordpress+MySQL, 并利⽤NFS去保存我们容器的源代码以及DB数据.搭建好nfs后任意node上的Pod访问db或者业务代码都会有相同的效果,数 ...

  8. (四十二)Unittest单元测试框架之关于unittest还需要知道的-跳过测试和预期失败

    随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...

  9. 哈希表相关题目-python

    栈&队列&哈希表&堆-python  https://blog.csdn.net/qq_19446965/article/details/102982047 1.O(1)时间插 ...

  10. 微信小程序 底部导航和广告轮播图3D实现

    底部导航   在app.json中 "tabBar": { "list": [ { "pagePath": "pages/inde ...