一、张量基本运算

  • 加减乘除取负号: add、sub、mul、div、neg
  • add_、sub_、mul_、div_、neg_(其中带下划线的版本会修改原数据)
import numpy as np
import torch

def tensor_caculate():
    torch.manual_seed(100)
    # randint(low,high,size) 取不到high,size:形状
    data=torch.randint(0,10,(3,2))
    print(data)
    print(data.add(1))
    # 带下划线的会修改源数据 =pd的replace=True
    print(data.add_(1))
if __name__ == '__main__':
    tensor_caculate()

二、张量点乘运算

点乘指(Hadamard)的是两个同维矩阵对应位置的元素相乘,使用.mul() 和运算符 * 实现。

                

def point_mul():
    torch.manual_seed(2)
    data = torch.randint(0, 10, (3, 2))
    matrix_x=torch.tensor([[1,2],[4,5],[7,8]])
    print(matrix_x*data)
    print(matrix_x.mul(data))
if __name__ == '__main__':
    point_mul()

三、张量矩阵乘法运算

矩阵乘法运算要求第一个矩阵 shape: (n, m),第二个矩阵 shape: (m, p), 两个矩阵点积运算 shape 为: (n, p)。

  • 运算符 @ 
  • torch.matmul 
def matrix_mul():
    # 点积运算
    data1 = torch.tensor([[1, 2], [3, 4], [5, 6]])
    data2 = torch.tensor([[5, 6], [7, 8]])
    # 方式一:
    data3 = data1 @ data2
    print("data3-->", data3)
    # 方式二:
    data4 = torch.matmul(data1, data2)
    print("data4-->", data4)

if __name__ == '__main__':
    matrix_mul()

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐