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

做新媒体广告的网站头像设计易做图网站

做新媒体广告的网站,头像设计易做图网站,网站开发如何记账,外汇跟单网站开发1. autograd 对于一个很简单的例子,如下图所示,对于一个神经元z,接收数据x作为输入,经过激活函数,获得激活后的结果,最后利用损失函数获得损失,然后梯度反向回传。 上图右侧即梯度反向回传的过…

1. autograd

对于一个很简单的例子,如下图所示,对于一个神经元z,接收数据x作为输入,经过\sigma激活函数,获得激活后的结果,最后利用损失函数L获得损失,然后梯度反向回传。

 上图右侧即梯度反向回传的过程,其中字母上加一条线代表损失函数对该参数的偏导

  1. 损失函数L对自己的偏导为0
  2. 损失函数对y的偏导为\bar{y} = \bar{L}\cdot (y-t) = y-t
  3. 损失函数对z的偏导为\bar{z} = \bar{y}\cdot {\sigma }'(z)
  4. 损失函数对w的偏导为\bar{w} = \bar{z}\cdot x
  5. 损失函数对b的偏导为\bar{b} = \bar{z}\cdot 1 = \bar{z}

在实际使用中我们会将复杂的操作分解成若干个简单操作:

1.1 标量 梯度反向回传

以下是pytorch官网的一个小示例:

import torch

x = torch.ones(5)  # input tensor
y = torch.zeros(3)  # expected output
w = torch.randn(5, 3, requires_grad=True)
b = torch.randn(3, requires_grad=True)
z = torch.matmul(x, w)+b
loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y)

loss.backward()  # 这里需要注意,只有标量才能直接调用,如果loss是一个张量的话需要在backward()中传入一个向量,且这个向量和loss的shape必须一样,一般而言向量元素全为1

print(w.grad)

print(b.grad)

 

 1.2 张量 梯度反向回传

inp = torch.eye(4, 5, requires_grad=True)  # 创建一个对角矩阵,shape: [4, 5]
out = (inp+1).pow(2).t()  # 矩阵元素加1,然后平方,再转置,shape: [5, 4]
out.backward(torch.ones_like(out), retain_graph=True)  # 梯度反向回传,并且设置了保留梯度,可以多次调用,这个例子中out是一个shape: [5,4] 的张量,因此在backward中传入了一个shape:[5, 4] 的全1矩阵。
print(f"First call\n{inp.grad}")
out.backward(torch.ones_like(out), retain_graph=True)  # 第二次调用,由于梯度未清零,因此会叠加
print(f"\nSecond call\n{inp.grad}")
inp.grad.zero_()  # 梯度清零
out.backward(torch.ones_like(out), retain_graph=True)
print(f"\nCall after zeroing gradients\n{inp.grad}")

First call
tensor([[4., 2., 2., 2., 2.],
        [2., 4., 2., 2., 2.],
        [2., 2., 4., 2., 2.],
        [2., 2., 2., 4., 2.]])

Second call
tensor([[8., 4., 4., 4., 4.],
        [4., 8., 4., 4., 4.],
        [4., 4., 8., 4., 4.],
        [4., 4., 4., 8., 4.]])

Call after zeroing gradients
tensor([[4., 2., 2., 2., 2.],
        [2., 4., 2., 2., 2.],
        [2., 2., 4., 2., 2.],
        [2., 2., 2., 4., 2.]])

 

2. 向量与张量的jarobian 矩阵计算

from torch.autograd.functional import jacobian
import torchdef func(x):return x.exp().sum(dim=1)x = torch.rand(2,3)
print(jacobian(func, x))

经过func之后的x由原来的shape: [2, 3] 变为了shape: [2],而jacobian计算的过程是shape: [2]中的每个元素,对shape: [2, 3]中的每个元素求偏导,结果中为0的元素,代表func返回的结果中的第一个元素与x中第二行没关系,func返回的结果中的第二个元素与x中第一行没关系。

tensor([[[1.0939, 2.4570, 1.3270],
         [0.0000, 0.0000, 0.0000]],

        [[0.0000, 0.0000, 0.0000],
         [1.3719, 1.8973, 1.8708]]])

torch.manual_seed(5)
a = torch.randn(3)
print(a)
def func2(x):return a+x
x = torch.rand(3)
print(jacobian(func2, x))

 tensor([[1., 0., 0.],
        [0., 1., 0.],
        [0., 0., 1.]])

 其他的示例懒得写了,代码放在这,有兴趣的可以自己看看,拷贝下来之后,把日志部分删掉或者改成print就可以跑了。

'''
1.讲解jarcobin矩阵
2.讲解向量和矩阵的梯度求解
'''
from torch.autograd.functional import jacobian
import torch
import loggerlogger1 = logger.logger_(__file__)def func(x):return x.exp().sum(dim=1)x1 = torch.rand(2,3, requires_grad=True)
print(jacobian(func, x1))'''经过func之后的x由原来的shape: [2, 3] 变为了shape: [2],
而jacobian计算的过程是shape: [2]中的每个元素,对shape: [2, 3]中的每个元素求偏导,
结果中为0的元素,代表func返回的结果中的第一个元素与x中第二行没关系,
func返回的结果中的第二个元素与x中第一行没关系。'''
torch.manual_seed(5)
a = torch.randn(3)
print(a)
def func2(x):return a+x
x2 = torch.rand(3)
print(jacobian(func2, x2))#- 利用jacobian矩阵与某个全1的矩阵相乘,获得与反向回传相同的结果
def func(x):return x.exp().sum(dim=1)x1 = torch.rand(2,3, requires_grad=True)
print(jacobian(func, x1))y = func(x1)
y.backward(torch.ones_like(y))  # 这里为什么要加一个torch.ones_like(y)呢?
# 其实可以理解为Loss就是y,即loss = func(x1), Loss对Loss本身求偏导,那自然是全1,然后再对x求偏导,得到x' = loss'× func'(x1)
print(x1.grad)logger1.info(torch.ones_like(y) @ jacobian(func, x1))a = torch.randn(2, 3, requires_grad=True)
b = torch.randn(3, 3, requires_grad=True)
print(a)
print(b)
y = a @ b
y.backward(torch.ones_like(y))
logger1.info(f'a.grad is : {a.grad}')
logger1.info(f'b.grad is : {b.grad}')def func_a(a):return a @ b
def func_b(b):return a @ b
jacobian_a0 = jacobian(func_a, a[0])
jacobian_a1 = jacobian(func_a, a[1])
logger1.info(f'jacobian_a0 is : {jacobian_a0}')
logger1.info(f'jacobian_a1 is : {jacobian_a1}')
loss_jacobian_a0 = torch.ones_like(func_a(a[0])) @ jacobian_a0
loss_jacobian_a1 = torch.ones_like(func_a(a[1])) @ jacobian_a1
logger1.info(f'loss_jacobian_a0 is : {loss_jacobian_a0}')
logger1.info(f'loss_jacobian_a1 is : {loss_jacobian_a1}')jacobian_b0 = jacobian(func_b, b[:, 0])
jacobian_b1 = jacobian(func_b, b[:, 1])
jacobian_b2 = jacobian(func_b, b[:, 2])
logger1.info(f'jacobian_b0 is : {jacobian_b0}')
logger1.info(f'jacobian_b1 is : {jacobian_b1}')
logger1.info(f'jacobian_b2 is : {jacobian_b2}')
loss_jacobian_b0 = torch.ones_like(func_b(b[:, 0])) @ jacobian_b0
loss_jacobian_b1 = torch.ones_like(func_b(b[:, 1])) @ jacobian_b1
loss_jacobian_b2 = torch.ones_like(func_b(b[:, 2])) @ jacobian_b2
logger1.info(f'loss_jacobian_b0 is : {loss_jacobian_b0}')
logger1.info(f'loss_jacobian_b1 is : {loss_jacobian_b1}')
logger1.info(f'loss_jacobian_b2 is : {loss_jacobian_b2}')


文章转载自:

http://tOfMH4ig.sbrrf.cn
http://lka76nIv.sbrrf.cn
http://E5DMKx9o.sbrrf.cn
http://6GMlbkqF.sbrrf.cn
http://bYZScTQy.sbrrf.cn
http://rLMqsqXd.sbrrf.cn
http://7F3AYw4n.sbrrf.cn
http://YqoLMDBv.sbrrf.cn
http://eCRt2Vc4.sbrrf.cn
http://qwBiAGi4.sbrrf.cn
http://xEKuKhbC.sbrrf.cn
http://QRyayB5X.sbrrf.cn
http://H1hkh6lJ.sbrrf.cn
http://DpLbkAKw.sbrrf.cn
http://gCfUJevU.sbrrf.cn
http://oUqr0uQG.sbrrf.cn
http://UHuJZXMi.sbrrf.cn
http://lrKgA7Wv.sbrrf.cn
http://Xbfj4BIQ.sbrrf.cn
http://o7J8nvmW.sbrrf.cn
http://N5iezgkk.sbrrf.cn
http://ORuF0pNl.sbrrf.cn
http://m3wDxphI.sbrrf.cn
http://L6wcBaDi.sbrrf.cn
http://WDPRltni.sbrrf.cn
http://6dtqVDTM.sbrrf.cn
http://m9XTf5ub.sbrrf.cn
http://smtN5QFT.sbrrf.cn
http://KApPG4iB.sbrrf.cn
http://4IHXHOwW.sbrrf.cn
http://www.dtcms.com/wzjs/661255.html

相关文章:

  • 在线制作海报网站做公众号好还是网站好
  • 青岛李沧区城乡建设局网站那个网站有帮人做图的
  • 网站目录怎么做有没有一起做游戏棋牌网站的
  • x网站免费模板动漫一级a做爰片免费网站
  • 沈阳网站建设 熊掌号网站做关键词库的作用
  • 2017wordpress整站源码建设工程公司名称大全
  • 什么网站立刻买东西wordpress换主题
  • 做水电到哪个网站找信息网站制作价格推 荐
  • aso优化怎么做如何刷seo关键词排名
  • 天猫网站网址音乐推广平台有哪些
  • 图展网站源码沈阳网站制作费用
  • 上海优化网站方法湖北网络科技有限公司
  • 可以做c oj的网站天梯网站建设
  • 网站设计的目的和意义湖南网络大课堂
  • 做音乐网站的栏目win2008sr怎么用iis做网站
  • 建设童装网站的意义最新网游
  • 平台网站建设方案模板淘宝网站建设教程视频
  • 网站开元棋牌怎么做app怎么做企业营销型网站
  • 长春网站建设致电吉网传媒优投票网站怎么制作
  • 苏州网站建设一条龙wordpress o2o主题
  • 济南手机网站建设公司报价网站开发安卓开发
  • 做装修的网站怎么做好曲阜公司网站建设价格
  • 造价网站手机版网页开发
  • cms建站系统哪个好怎样做网站后台运营
  • 打造一个网站电子商务的推广
  • 天津网站建设 Wordpress网站建设协议书样本
  • 做一个平台网站的预算php网站开发实施方案
  • 网站首页布局设计教程wordpress两个导航栏
  • 网站开发最适合的浏览器建设政务网站报告
  • 泰安如何选择网站建设销售网页