深度学习day2-Tensor 2

六 Tensor常见操作

Tensor:多维数组,用于存储和操作数据

1 获取元素值

data.item():单个元素tensor转为python数值

import torch
#标量
x=torch.tensor(1)
print(x.item())
#一阶
x=torch.tensor([100])
print(x.item())
#如果输入的数据超过1个,就不能用item函数取
#取出来的是基本数据的数字
x=torch.tensor([1,2])
print(x.item())

2 元素值运算

加减乘除幂次方取余取整等,带有_的方法会替换原始值

import torch
def test01():
    #带_结尾的函数基本都是直接操作原tensor
    x=torch.manual_seed(66)
    x=torch.randint(1,10,(3,3))
    print(x)
    #加
    x2=x.add(100)#返回一个新的数
    print(x2)
    x.add_(200)
    print(x)
    #减
    x=x.sub(1)
    print(x)
    x.sub_(100)
    print(x)
    #乘
    x=x.mul(2)
    print(x)
    x=x.mul_(2)
    print(x)
    #除
    x=x.div(4)
    print(x)
    x.div_(2)
    print(x)
​
    x=x.pow(2)#平方
    print(x)
​
    x=x**2
    print(x)
    x=x+10
    print(x)
    x=x-10
    print(x)
    x=x*10
    print(x)
    x=x/2
    print(x)
    x=x//2#取整
    print(x)
    x=x%2#取余
    print(x)
    x-=100#x=x-100
    print(x)
​
​
​
​
if __name__=='__main__':
    test01()

3 阿达玛积

矩阵对应位置的元素相乘,mul函数或者*

import torch
def test():
    x1=torch.tensor([1,2],
                   [3,4])
    x2=torch.tensor([1,2],
                   [3,4])
    #阿达玛积时必须形状一样
    x3=x1*x2
    print(x3)
    x4=x1.mul(x2)
    print(x4)
    
   
if __name__=='__main__':
    test()

4 Tensor相乘

将两个向量映射为一个标量,如果第一个矩阵是(N,M),那么第二个矩阵的shape必须是(M,P),最后两个矩阵的点积运算的shape为(N,P),使用@或者matmul完成

mm只能用于2维矩阵

import torch
def test2():
    x1=torch.tensor([1,2],
                   [3,4])
    x2=torch.tensor([1,2],
                   [3,4])
    x3=torch.matmul(x1,x2)
    x3=x1.matmul(x2)
    x3=x1 @ x2
    x3=x1.mm(x2)
    print(x3)
​
    x=torch.randint(1,4,(3,3,3))
    print(x)
    x2=torch.tensor(1,4,(3,3,3))
    print(x2)
    x3=x@x2
    x3=x.matmul(x2)
    print(x3)
    
if __name__=='__main__':
    test2()

5 索引操作

1.简单索引

根据指定的下标选取数据

import torch
​
​
def test():
    data = torch.randint(0, 10, (3, 4))
    print(data)
    # 1. 行索引
    print("行索引:", data[0])
    
    # 2. 列索引
    print("列索引:", data[:, 0])
    
    # 3. 固定位置索引:2种方式都行
    print("索引:", data[0, 0], data[0][0])
​
​
if __name__ == "__main__":
    test()

2.列表索引

import torch
def test():
    torch.manual_seed(66)
    x=torch.randint(1,10,(5,5,3))#5个模块,模块里面的size是(5×3)
    print(x)
    print(x.shape)
    print(x[1])#取下标为1,实际上排序为第2个的模块
    print(x[1,2])#取模块下标为1行数下标为2的数据
    p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值