Pytorch常用函数示例

常用函数

方法 说明
add() Tensor中每个元素同加一个标量,或与另一个Tensor逐元素相加
mul() Tensor中每个元素同乘一个标量,或与另一个Tensor逐元素相乘
div() Tensor中每个元素同除一个标量,或与另一个Tensor逐元素相除
fmod()和remainder() Tensor中每个元素与一个标量的除法余数,相当于Python中的%操作
abs() 对Tensor中的每个元素取绝对值,并返回
ceil() 对Tensor中的每个元素向上取整
floor() 对Tensor中的每个元素向下取整
clamp() 对Tensor中的每个元素取上下限
round() 对Tensor中的每个元素取最近的整数
frac() 返回Tensor中每个元素的分数部分
neg() 对Tensor中的每个元素取负
reciprocal() 对Tensor中的每个元素取倒数
log() 返回一个张量,包含Tensor中每个元素的自然对数
pow() 对Tensor中的每个元素同取一个标量幂值,或采用另外一个Tensor的对应元素
取幂,或对标量采用Tensor的每个元素取幂
exp() 返回一个张量,包含Tensor中每个元素的指数
sigmoid() 返回一个张量,包含Tensor中的每个元素的sigmoid值
sign() 返回一个张量,包含Tensor中每个元素的正负值
sqrt() 返回一个张量,包含Tensor中每个元素的平方根
dist() 返回两个Tensor的范数
mean() 返回Tensor中所有元素的均值
norm() 返回Tensor的范数值
prod() 返回Tensor的所有元素之积
sum() 返回Tensor的 所有元素之和
max() 返回Tensor的所有元素的最大值
min() 返回Tensor的所有元素的最小值

方法 说明
dot() 两个向量点积
mv() 矩阵与向量相乘
mm() 两个矩阵相乘
addmm() 将两个矩阵进行矩阵乘法操作的结果与另一个矩阵相加
addmv() 将矩阵和向量相乘的结果与另一个向量相加
addr() 将两个向量进行张量积(外积)操作的结果与另一个矩阵相加
bmm() 两个batch内的矩阵进行批矩阵乘法
eig() 计算方阵的特征值和特征向量
ger() 两个向量的张量积
inverse() 对方阵求逆
addbmm() 将两个batch内的矩阵进行批矩阵乘法操作并累加,其结果与另一矩阵相加
baddbmm() 将两个batch内的矩阵进行批矩阵乘法操作,其结果与另一batch内的矩阵相加

示例笔记

from torch import nn
import torch
import numpy as np

def test_add():
    tenA = torch.Tensor([1, 2, 3])
    tenB = torch.Tensor([4, 5, 6])
    print(tenA)
    tenC = tenA.add(tenB)
    print(tenC)

def test_mul():
    tenA = torch.Tensor([1, 2, 3])
    tenB = torch.Tensor([4, 5, 6])
    print(tenA)
    tenC = tenA.mul(tenB)
    print(tenC)

def test_floor():
    tenA = torch.Tensor([1.9, 2.1, 3.0])
    print(tenA)
    tenC = tenA.floor()
    print(tenC)

def test_round():
    tenA = torch.Tensor([1.9, 2.5999, 3.4999])
    print(tenA)
    tenC = tenA.round()
    print(tenC)

def test_frac():
    tenA = torch.Tensor([1.5, 2.4, 3.3])
    print(tenA)
    tenC = tenA.frac()
    print(tenC)

def test_exp():
    tenA = torch.Tensor([1.0, 0.0, -1.0, 2.0])
    print(tenA)
    tenC = tenA.exp() # y = e^(x)
    print(tenC)

def test_pow():
    tenA = torch.Tensor([1.0, 0.0, -1.0, 2.0])
    print(tenA)
    tenC = tenA.pow(3) # y = x ^ n
    print(tenC)

def test_sigmoid():
    tenA = torch.Tensor([-10000000, 0, 1, 10000000])
    print(tenA)
    tenC = tenA.sigmoid() # x -> -NaN: 0 x -> NaN: 1
    print(tenC)

def test_sign():
    tenA = torch.Tensor([-20000000, 0, 2, 20000000])
    print(tenA)
    tenC = tenA.sign()
    print(tenC)

def test_maxmin():
    tenA = torch.Tensor([-20000000, 0, 2, 20000000])
    print(tenA)
    tenCMax = tenA.max()
    tenCMin = tenA.min()
    print(tenCMax, tenCMin)

# 通过dist来计算向量与向量之间的距离度量
def test_norm():
    tenA = torch.Tensor([3, 4, 5])
    # L1:范数 向量无数的绝对值之和
    print(tenA)
    rlt1 = tenA.norm(p=1)
    print("L1", rlt1)
    # L2: 范数 向量元数的平方和再平方根
    rlt2 = tenA.norm(p=2)
    print("L2", rlt2)
    # tenA 的核范数
    print(tenA.norm(p='fro'))

# dist是用来衡量两个向量或者矩阵之间的距离(N维空间的两个点之间的距离)
def test_dist():
    a = torch.Tensor([1, 2, 3])
    b = torch.Tensor([4, 5, 6])
    print(torch.dist(a, b, p=1))  # 一范数 sum(|a(i) - b(i)|)
    print(torch.dist(a, b, p=2))  # 二范数 sqrt(sum(a(i)-b(i))^2)
    print(torch.dist(a, b, p=3))  # 三范数 ???

# 两个向量点积
def test_dot():
    a = torch.Tensor([1, 2, 3])
    b = torch.Tensor([4, 5, 6])
    c = a.dot(b)
    print(a, b)
    print(c)

# 两个矩阵相乘
def test_mm():
    a = torch.Tensor([[1, 2, 3]])
    b = torch.Tensor([[4],[5],[6]])
    # c = torch.mm(a, b)
    c = a.mm(b)
    print(a, b)
    print(c)

# 对方阵求逆
def test_inverse():
    a = torch.Tensor([[1, 2],[3, 2]])
    c = a.inverse()
    print(a)
    print(c)
    # 线性方程组的简单应用
    # x + 2y = 5
    # 3x + 2y = 10
    print("线性方程组的简单应用:")
    tenA = torch.Tensor([[1, 2], [3, 2]])
    invA = tenA.inverse()
    tenB = torch.Tensor([[5], [10]])
    tenRlt = invA.mm(tenB)
    print(tenA)
    print("[x,y]=", tenRlt)

# 向量的叉乘(乘积)运算(几何意义:新向量的模长->两个向量所构成形四边形的面积,方向为垂直这两个向量)
def test_cross():
    tenA = torch.Tensor([0, 5, 0])
    tenB = torch.Tensor([3, 0, 0])
    tenC = tenA.cross(tenB)
    print(tenA)
    print(tenB)
    print(tenC)

# test_add()
# test_mul()
# test_floor()
# test_round()
# test_frac()
# test_exp()
# test_pow()
# test_sigmoid()
# test_sign()
# test_maxmin()
# test_dist()
# test_norm()
# test_dot()
# test_mm()
# test_inverse()
test_cross()
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值