Day24_【深度学习(3)—PyTorch使用(2)—张量的数值计算】
一、张量基本运算
- 加减乘除取负号: add、sub、mul、div、neg
- add_、sub_、mul_、div_、neg_(其中带下划线的版本会修改原数据)
import numpy as np
import torchdef 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=Trueprint(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 @ data2print("data3-->", data3)# 方式二:data4 = torch.matmul(data1, data2)print("data4-->", data4)if __name__ == '__main__':matrix_mul()