【PyTorch学习2】张量运算

1. 张量的基本运算

# 1. 不修改原数据
torch.manual_seed(1)
data11 = torch.randint(0,10,[1,3])  # tensor([[5, 9, 4]])
data12 = data11.add(10)  # 加法,所有数据加10 data11—tensor([[5, 9, 4]]) data12—tensor([[15, 19, 14]])
data13 = data11.sub(10)  # 减法,data11—tensor([[5, 9, 4]]) data13—tensor([[-5, -1, -6]])
data14 = data11.mul(10)  # 乘法 data11—tensor([[5, 9, 4]]) data14—tensor([[50, 90, 40]])
data15 = data11.div(10)  # 除法 data11—tensor([[5, 9, 4]]) data15—tensor([[0.5000, 0.9000, 0.4000]])
# 2. 修改原数据——类似指针传递
torch.manual_seed(2)
data21 = torch.randint(0,10,[1,3])  # tensor([[8, 7, 1]])
data22 = data21.add_(10)  # 加法,所有数据加10 data21—tensor([[18, 17, 11]]) data22—tensor([[18, 17, 11]])
data23 = data21.sub_(10)  # 减法,data21—tensor([[8, 7, 1]]) data22—tensor([[8, 7, 1]]) data23—tensor([[8, 7, 1]])

2. Hadamard Product——矩阵对应元素相乘

# 3. Hadamard Product
data31 = torch.tensor([[1,2],[3,4]])  # tensor([[1, 2],[3, 4]])
data32 = torch.tensor([[5,6],[7,8]])  # tensor([[5, 6],[7, 8]])
data33 = data31.mul(data32)  # tensor([[ 5, 12],[21, 32]])
data34 = data31*data32  # tensor([[ 5, 12],[21, 32]])

3. 点积运算——A(m×n),B(n×s),AB矩阵乘法

# 4. 点积运算
data41 = torch.tensor([[2,4],[6,8],[10,12]])  # tensor([[2, 4],[6, 8],[10,12]])
data42 = torch.tensor([[1,3],[5,7]])  # tensor([[1, 3],[5, 7]])
data43 = torch.mm(data41,data42)  # 输入二维张量 tensor([[ 22,  34],[ 46,  74],[ 70, 114]])
data44 = data41@data42  # tensor([[ 22,  34],[ 46,  74],[ 70, 114]])
data45 = torch.bmm(torch.randn(2,2,2),torch.randn(2,2,3))  # 输入张量(B,H,W)——(批次,行,列),对应batch计算
data46 = torch.matmul(data41, torch.randn(2,2,3))  # 可计算二维/三维,二维与三维(将二维重复扩展成三维进行计算)

4. 指定运算设备

# 5. 将张量移动到指定设备(存储在不同设备的张量不能进行运算)
data51 = torch.tensor(12)  # data51—cpu
data52 = data51.cuda()  # data51—cpu data52—cuda:0
data53 = data51.cpu()  # data51—cpu data53—cpu
data54 = torch.tensor(1,device='cuda:0')  # data54—cuda:0
data55 = data51.to('cuda:0')  # data51—cpu data55—cuda:0
# !!!不同设备上张量不能进行计算
  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值