PyTorch--Tensor算术运算

import torch

# ----------加法运算----------
a = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
b = torch.tensor([[10, 10, 10], [10, 10, 10], [10, 10, 10]])
print(a)
print(b)
# tensor([[1, 2, 3],
#         [4, 5, 6],
#         [7, 8, 9]])
# tensor([[10, 10, 10],
#         [10, 10, 10],
#         [10, 10, 10]])
print(a + 100)
# tensor([[101, 102, 103],
#         [104, 105, 106],
#         [107, 108, 109]])
print(a + b)
# tensor([[11, 12, 13],
#         [14, 15, 16],
#         [17, 18, 19]])
print(a.add(b))  # a的值不会发生改变
# tensor([[11, 12, 13],
#         [14, 15, 16],
#         [17, 18, 19]])
print(a.add_(b))  # 带下划线的方式会改变a的值,即a.add_(b)等价于a=a+b
# tensor([[11, 12, 13],
#         [14, 15, 16],
#         [17, 18, 19]])
print("a发生改变:\n", a)
# a发生改变:
#  tensor([[11, 12, 13],
#         [14, 15, 16],
#         [17, 18, 19]])

# ----------减法运算----------
a = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
b = torch.tensor([[10, 10, 10], [10, 10, 10], [10, 10, 10]])
print(b - a)
print(torch.sub(b, a))
print(b.sub(a))
print(b.sub_(a))  # 会将结果赋值给b
# tensor([[9, 8, 7],
#         [6, 5, 4],
#         [3, 2, 1]])

# ----------乘法运算----------
# 相乘的Tensor必须维度完全相同,并且对应的结果为对应元素相乘
a = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
b = torch.tensor([[10, 10, 10], [10, 10, 10], [10, 10, 10]])
print(a * b)
print(torch.mul(a, b))
print(a.mul(b))
print(a.mul_(b))  # a的值会发生改变
print(a)
# tensor([[110, 120, 130],
#         [140, 150, 160],
#         [170, 180, 190]])

# ----------除法运算----------
a = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]], dtype=torch.float)
b = torch.tensor([[2, 4, 6], [8, 10, 12], [14, 16, 18]], dtype=torch.float)
print(b / a)
print(torch.div(b, a))
print(b.div(a))
print(b.div_(a))  # 会将结果赋值给b
# tensor([[2., 2., 2.],
#         [2., 2., 2.],
#         [2., 2., 2.]])

# # ----------矩阵运算----------
a = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
b = torch.tensor([[10, 10, 10], [10, 10, 10], [10, 10, 10]])
print(a @ b)  # 矩阵相乘
print(a.mm(b))
print(a.matmul(b))  # 矩阵相乘
print(torch.mm(a, b))  # 矩阵相乘
print(torch.matmul(a, b))  # 矩阵相乘
# tensor([[ 60,  60,  60],
#         [150, 150, 150],
#         [240, 240, 240]])

# 对于高维度的Tensor(dim>2),定义其矩阵乘法仅在最后的两个维度上,要求前面的维度必须保持一致, 运算操作只有torch.matmul()
c = torch.ones(1, 2, 3, 4)
d = torch.ones(1, 2, 4, 3)
print(c)
print(d)
# tensor([[[[1., 1., 1., 1.],
#           [1., 1., 1., 1.],
#           [1., 1., 1., 1.]],
# 
#          [[1., 1., 1., 1.],
#           [1., 1., 1., 1.],
#           [1., 1., 1., 1.]]]])
# tensor([[[[1., 1., 1.],
#           [1., 1., 1.],
#           [1., 1., 1.],
#           [1., 1., 1.]],
# 
#          [[1., 1., 1.],
#           [1., 1., 1.],
#           [1., 1., 1.],
#           [1., 1., 1.]]]])
print(c.matmul(d))
# tensor([[[[4., 4., 4.],
#           [4., 4., 4.],
#           [4., 4., 4.]],
# 
#          [[4., 4., 4.],
#           [4., 4., 4.],
#           [4., 4., 4.]]]])

PyTorch提供了丰富的张量算术运算,可以对张量进行各种复杂的运算。你可以使用PyTorch算术函数来执行加法、减法、乘法和除法操作。例如,你可以使用add()函数执行张量的加法运算,subtract()函数执行减法运算,multiply()函数执行乘法运算,divide()函数执行除法运算。 此外,PyTorch还支持复杂数的算术运算,通过安装"pytorch-complex-tensor"库,你可以使用该库中提供的ComplexTensor类来进行复杂数的模拟算术运算,该库支持渐变。你可以使用ComplexTensor类来创建初始张量,并在其中执行复杂的算术运算。 下面是一个使用PyTorch进行张量算术运算的例子: ``` import torch # 创建两个张量 a = torch.tensor([1, 2, 3]) b = torch.tensor([4, 5, 6]) # 执行加法运算 c = torch.add(a, b) # 执行减法运算 d = torch.subtract(a, b) # 执行乘法运算 e = torch.multiply(a, b) # 执行除法运算 f = torch.divide(a, b) # 输出结果 print(c) # tensor([5, 7, 9]) print(d) # tensor([-3, -3, -3]) print(e) # tensor([4, 10, 18]) print(f) # tensor([0.25, 0.4, 0.5]) ``` 通过使用PyTorch的张量算术运算,你可以对张量进行各种复杂的运算,并得到所需的结果。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [[PyTroch系列-7]:PyTorch基础 - 张量的算术运算](https://blog.csdn.net/HiWangWenBing/article/details/119428023)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [pytorch-complex-tensor:Pytorch的非官方复张量和标量支持](https://download.csdn.net/download/weixin_42128537/18698908)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ww'

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值