pytorch 基本运算

有重载运算符 和 函数两种方法进行张量的运算

import torch
import numpy as np
a = torch.rand(2,3)
b = torch.rand(3)
# 这里b 使用了 broatcasting 自动进行了维度扩展
print("运算符 + 与 add() 方法运算结果一致:{} ".format(torch.all(torch.eq(torch.add(a,b),a+b))))
print("运算符 - 与 sub() 方法运算结果一致:{} ".format(torch.all(torch.eq(torch.sub(a,b),a-b))))
print("运算符 * 与 mul() 方法运算结果一致:{} ".format(torch.all(torch.eq(torch.mul(a,b),a*b))))
print("运算符 / 与 div() 方法运算结果一致:{} ".format(torch.all(torch.eq(torch.div(a,b),a/b))))
运算符 + 与 add() 方法运算结果一致:True 
运算符 - 与 sub() 方法运算结果一致:True 
运算符 * 与 mul() 方法运算结果一致:True 
运算符 / 与 div() 方法运算结果一致:True 

矩阵相乘 torch.matmul(只取最后两维度进行运算), @(是matmul方法的重载) 两种方法

import torch
import numpy as np
a = torch.rand(2,3)
b = torch.rand(3,4)
print("运算符 @ 与 matmul 方法运算结果一致:{} ".format(torch.all(torch.eq(torch.matmul(a,b),a@b))))
print("运算后张量的 shape: {}".format((a@b).shape))
运算符 @ 与 matmul 方法运算结果一致:True 
运算后张量的 shape: torch.Size([2, 4])

pow / ** 幂运算

import torch
import numpy as np
a = torch.full([2,2],2)

print("a 的二次方: {}".format(a.pow(2)))
print("a 的三次方: {}".format(a**3))
#平方根
print("a 的平方根: {}".format(torch.sqrt(a.pow(2))))
a 的二次方: tensor([[4., 4.],
        [4., 4.]])
a 的三次方: tensor([[8., 8.],
        [8., 8.]])
a 的平方根: tensor([[2., 2.],
        [2., 2.]])

exp / log

import torch
import numpy as np
a = torch.exp(torch.ones(2,2))
print("e 为: {}".format(a))
print("e 取log : {}".format(torch.log(a)))

e 为: tensor([[2.7183, 2.7183],
        [2.7183, 2.7183]])
e 取log : tensor([[1., 1.],
        [1., 1.]])

clamp 范围限幅 (min)将低于min的值裁剪为min , (min,max) 将数据低于min 裁剪为min,高于max裁剪为max

import torch
import numpy as np
a = torch.randn(2,3)
print("a 为: {}".format(a))
print("a 裁剪后为 : {}".format(a.clamp(0.1)))
print("a 裁剪后为 : {}".format(a.clamp(0.1,0.3)))
a 为: tensor([[-0.4780, -0.2077,  0.3702],
        [-1.5801, -0.0170,  0.6737]])
a 裁剪后为 : tensor([[0.1000, 0.1000, 0.3702],
        [0.1000, 0.1000, 0.6737]])
a 裁剪后为 : tensor([[0.1000, 0.1000, 0.3000],
        [0.1000, 0.1000, 0.3000]])
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值