五、Pytorch tensor 的数学运算

这篇博客详细介绍了PyTorch中Tensor的基础运算,包括加法、减法、哈达玛积、除法;矩阵运算如二维和多维矩阵相乘;幂运算、开方运算、指数与对数运算;近似值运算如取整和裁剪,特别是针对梯度裁剪的讨论。
摘要由CSDN通过智能技术生成

目录

1、基础运算

(1)加法运算

(2)减法运算

(3)哈达玛积(element wise,对应元素相乘)

(4)除法运算

2、矩阵运算

(1)二维矩阵相乘

(2)多维矩阵相乘

3、幂运算

4、开方运算

5、指数与对数运算

6、近似值运算

7、裁剪运算


1、基础运算

  • 可以使用 + - * / 推荐
  • 也可以使用 torch.add, mul, sub, div

(1)加法运算

def add():
    # add +
    # 这两个Tensor加减乘除会对b自动进行Broadcasting
    a = torch.rand(3,4)
    b = torch.rand(4)
    print("a = {}".format(a))
    print("b = {}".format(b))
    # a、b列数相同,行数不同,将a的每行与b对应位置相加
    c1 = a + b
    c2 = torch.add(a,b)
    c3 = torch.eq(c1,c2)
    # torch.all()判断每个位置的元素是否相同
    c4 = torch.all(c3)
    print("a + b = {}".format(c1))
    print("a + b = {}".format(c2))
    print("torch.eq = {}".format(c3))
    print("torch all = {}".format(c4))
    # a = tensor([[0.8514, 0.5017, 0.3924, 0.7817],
    #             [0.0219, 0.7352, 0.5634, 0.7285],
    #             [0.9187, 0.1628, 0.9236, 0.3603]])
    # b = tensor([0.0809, 0.0295, 0.6065, 0.8024])
    # a + b = tensor([[0.9322, 0.5312, 0.9989, 1.5841],
    #                 [0.1028, 0.7647, 1.1700, 1.5309],
    #                 [0.9996, 0.1923, 1.5301, 1.1627]])
    # a + b = tensor([[0.9322, 0.5312, 0.9989, 1.5841],
    #                 [0.1028, 0.7647, 1.1700, 1.5309],
    #                 [0.9996, 0.1923, 1.5301, 1.1627]])
    # torch.eq = tensor([[True, True, True, True],
    #                    [True, True, True, True],
    #                    [True, True, True, True]])
    # torch
    # all = True

(2)减法运算

def minus():
    # 这两个Tensor加减乘除会对b自动进行Broadcasting
    a = torch.rand(3,4)
    b = torch.rand(4)
    print("a = {}".format(a))
    print("b = {}".format(b))
    # a、b列数相同,行数不同,将a的每行与b对应位置相加
    c1 = a - b
    c2 = torch.sub(a,b)
    # torch.all()判断每个位置的元素是否相同
    c3 = torch.eq(c1,c2)
    c4 = torch.all(c3)
    print("a - b = {}".format(c1))
    print("a - b = {}".format(c2))
    print("torch.eq = {}".format(c3))
    print("torch all = {}".format(c4))
    # a = tensor([[0.8499, 0.1003, 0.3179, 0.1217],
    #             [0.2119, 0.7742, 0.3973, 0.7241],
    #             [0.8559, 0.3558, 0.1549, 0.4583]])
    # b = tensor([0.4750, 0.9261, 0.7107, 0.1397])
    # a - b = tensor([[0.3749, -0.8258, -0.3928, -0.0180],
    #                 [-0.2631, -0.1519, -0.3135, 0.5844],
    #                 [0.3809, -0.5703, -0.5558, 0.3186]])
    # a - b = tensor([[0.3749, -0.8258, -0.3928, -0.0180],
    #                 [-0.2631, -0.1519, -0.3135, 0.5844],
    #                 [0.3809, -0.5703, -0.5558, 0.3186]])
    # torch.eq = tensor([[True, True, True, True],
    #                    [True, True, True, True],
    #                    [True, True, True, True]])
    # torch
    # all = True
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值