首页 > 其他分享 >动手学深度学习——基本张量运算

动手学深度学习——基本张量运算

时间:2024-05-06 10:11:06浏览次数:23  
标签:loss tensor torch 张量 动手 64 grad 运算

基本张量运算

张量

张量可以被看做多维数组,高维矩阵,可以进行多种数据操作和数学运算

import torch
torch.tensor([[1.,-1.],[1.,-1.]])

创建张量

tensor([[ 1., -1.],
        [ 1., -1.]])
a = torch.randn(2,3)
torch.sigmoid(a)
a

处理张量

tensor([[-0.1690, -0.2554, -0.4382],
        [-1.0814, -2.1793, -1.0939]])
torch.argmax(a)
torch.argmax(a,dim=1)
torch.sum(a)
tensor(-5.2172)
torch.index_select(a,dim=1,index=torch.tensor([0,2]))
tensor([[-0.1690, -0.4382],
        [-1.0814, -1.0939]])
loss1 = torch.tensor(3)
loss1.shape
loss1.item()

取值

3

自动微分

a = torch.randn(2,3,requires_grad=True)
loss = a.sum()
loss.backward()
a.grad
tensor([[1., 1., 1.],
        [1., 1., 1.]])
a = torch.randn(2,3,requires_grad=True)
a

设置梯度追踪

tensor([[-0.2077, -0.9880, -0.1491],
        [ 0.5216, -0.2129,  0.4189]], requires_grad=True)
loss = a.sum(dim = 0)
loss.shape
loss
tensor([ 0.3139, -1.2009,  0.2697], grad_fn=<SumBackward1>)

传入向量可以看作上一层的偏导

a = torch.randn(2,3,requires_grad=True)
loss = a.abs().sum()
while loss < 100:
    loss = loss * 2
loss
tensor(181.8438, grad_fn=<MulBackward0>)
loss.backward()
a.grad
tensor([[ 64., -64., -64.],
        [-64., -64.,  64.]])
b = a.detach()
b.requires_grad
False

调用detach方法可以显式地让Autograd引擎将某一张量从追踪地计算图中排除

标签:loss,tensor,torch,张量,动手,64,grad,运算
From: https://www.cnblogs.com/Sun-Wind/p/18174380

相关文章

  • 运算符重载
    运算符重载基本规则可以重载的运算符:不可重载的运算符://返回类型operator后面加运算符(参数列表)//eg.Integeroperator+(Integerl,Integerr);classInteger{public:Integer(intn=0):i(n){}constIntegeroperator+(constInteger&v){ //在类中......
  • python教程2:变量+数据类型+运算符
    一、变量程序是从上到下依次逐⾏执⾏的,所以变量必须先定义,后调⽤,否则会报错变量定义规范 二、数据类型1、数字类型可⽤type()⽅法来查看数据类型 2、字符串多引号多引号什么作⽤呢?作⽤就是多⾏字符串必须⽤多引号字符串拼接3、布尔类型布尔类型很简单,就两个......
  • 张量计算框架的学习 pytorch和tensorflow
    要实现一些模型或者算法,可以直接用pytorch库或者tensorflow库,但是也可以再深入一些也就是对库本身进行一些扩展。找到两篇文章觉得不错:知乎上分享的万字综述,核心开发者全面解读PyTorch内部机制https://zhuanlan.zhihu.com/p/67834038探索TensorFlow的运行原理:TensorFlow是如......
  • day1-py注释、变量、运算符
    一、python注释1、注释单行注释:#,ctrl+/多行注释:三对单引号、双引号注释的作用:备注,解释说明注意:注释的代码是不会执行的二、变量1、变量是什么变量存储数据的值变量=值(数据类型)#将数据的值赋值给变量2、变量名的命名规则1)只能由数字、字母、下划线组成2)不能用......
  • C# 二进制数使用按位与运算(&)来获取子集选中的值。
    需求:现在有一个二进制数整集all,一个子集sub,要求根据整集的值获取子集被选中的值是多少?//假设完整值是15,1248的和intall=15;//1248的和intsub=7;//124的和intresult=all&sub;//输出7,选中124int......
  • JavaScript运算符及优先级全攻略,点击立刻升级你的编程水平!
    在编程的世界里,运算符是构建逻辑、实现功能的重要工具。它能帮助我们完成各种复杂的计算和操作。今天,我们就来深入探索JavaScript中运算符的奥秘,掌握它们的种类和优先级,让你的代码更加高效、简洁!一、什么是运算符运算符,顾名思义,就是用于执行特定操作的符号。在JavaScript中,运......
  • C++里也有菱形运算符?
    最近在翻《c++函数式编程》的时候看到有一小节在说c++14新增了“菱形运算符”。我寻思c++里好像没什么运算符叫这名字啊,而且c++14新增的功能很少,我也不记得有添加这种语法特性。一瞬间我有些怀疑我的记忆了,所以为了查漏补缺,我写了这篇文章。什么是菱形运算符这个概念在Java里比......
  • 逻辑运算符
        逻辑运算符包含:&&,||,!。但是逻辑运算符不要求它操作数的值也为0或者1,C语言会把任何零值当作false,任何非零值当作true。    其中需要特别注意的是,&&和||会对操作数进行"短路"计算。也就是说,这些操作符会首先计算左操作数的值,然后计算右操作......
  • decimal 高精度运算
    decimal高精度运算:https://blog.csdn.net/survivorsfyh/article/details/121700803?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171429544916800226541925%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=17142954491......
  • 运算符的分类
    运算符的分类JS中的运算符,分类如下:算数运算符自增/自减运算符一元运算符三元运算符(条件运算符)逻辑运算符赋值运算符比较运算符下面来逐一讲解。算术运算符用于执行两个变量或值的算术运算。此外,算数运算符存在隐式类型转换的情况,前文“数据类型转换......