torch的矩阵运算笔记

pytorch的矩阵运算笔记,方便查找观看

import torch

"""
python矩阵运算
"""
# ======================近似运算========================#
# ceil():向上取整
# floor():向下取整
# round():四舍五入
# trunc():取整数
# frac():取小数
# ======================近似运算========================#

# ==============================================#
# 矩阵与标量的计算
# ==============================================#
mat1 = torch.FloatTensor([1, 2, 3])
print("mat1:", mat1)
print("mat1+2:", mat1 + 2)

# ======================哈达玛积========================#
# 两个相同尺寸的矩阵对应元素相乘:element wise;元素乘积
# torch.mul(mat2, mat3) == mat2 * mat3
# torch.div(mat2, mat3) == mat2 / mat3
# torch.add(mat2, mat3) == mat2 + mat3
# torch.sub(mat2, mat3) == mat2 - mat3
# ======================哈达玛积========================#
mat2 = torch.FloatTensor([[7, 8, 9], [8, 10, 12]])
mat3 = torch.FloatTensor([[1, 2, 3], [4, 5, 6]])
print("mat2 * mat3:", mat2 * mat3)
print("torch.mul(mat2, mat3):", torch.mul(mat2, mat3))
print("mat2 / mat3:", mat2 / mat3)
print("torch.div(mat2, mat3):", torch.div(mat2, mat3))
print("mat2 + mat3:", mat2 + mat3)
print("torch.add(mat2, mat3):", torch.add(mat2, mat3))
print("mat2 - mat3:", mat2 - mat3)
print("torch.sub(mat2, mat3):", torch.sub(mat2, mat3))

# ======================矩阵乘法========================#
# 线性代数中的矩阵乘法:(有三种写法)
#   torch.mm():二维矩阵乘法
#   torch.matmul():多维矩阵乘法
#        @:多维矩阵乘法
# 多维矩阵的乘法参与运算的只有最后两个维度,前面的维度都是不参与运算的
# ======================矩阵乘法========================#
mat4 = torch.randint(0, 10, (1, 2, 5, 4))
mat5 = torch.randint(0, 10, (1, 2, 4, 5))
print("mat4.shape:", mat4.shape, "mat5.shape:", mat5.shape)
print("torch.mm(mat4.reshape((10, 4)), mat5.reshape((4, 10))).shape:",
      torch.mm(mat4.reshape((10, 4)), mat5.reshape((4, 10))).shape)
print("torch.matmul(mat4, mat5).shape:", (torch.matmul(mat4, mat5)).shape)
print("(mat4 @ mat5).shape:", (mat4 @ mat5).shape)

# ======================幂运算和开方========================#
# torch.pow() == **
# torch.sqrt() == ** 0.5
# ======================幂运算========================#
mat6 = torch.FloatTensor([9, 8, 4])
mat7 = torch.FloatTensor([2, 3, 2])
print("mat6 ** mat7:", mat6 ** mat7)
print("torch.pow(mat6, mat7):", torch.pow(mat6, mat7))
print("mat6 ** 0.5:", mat6 ** 0.5)
print("torch.sqrt(mat6):", torch.sqrt(mat6))

# ======================对数运算========================#
# torch.log():是以e为底的
# torch.log2():
# torch.log10():
# ======================对数运算========================#
print("torch.log(torch.exp(torch.Tensor([1, 2, 3])))", torch.log(torch.exp(torch.Tensor([1, 2, 3]))))

猜你喜欢

转载自blog.csdn.net/weixin_50727642/article/details/125078185