1.张量的定义与属性
张量(Tensor)是一个数学概念,用于描述多维数据结构或多维数组。它是一种可以表示标量、向量、矩阵以及更高维数据的数学对象。
#0维张量:标量scaler
scaler = torch.tensor(1)
print(f'{scaler.ndim}维张量:{scaler}')
#1维张量:向量vector
vector = torch.tensor([1,2,3])
print(f'{vector.ndim}维张量:{vector}')
#多维张量
tensor=torch.tensor([[1,2,3],[4,5,6]])
print(f'{tensor.ndim}维张量:{tensor}')
2.张量的创建
线性张量和随机张量
def test01():
data=torch.tensor(1)
print(data)
data=torch.tensor(np.random.randn(3,4))
print(data)
data=torch.tensor([1.,2.,3.])
print(data)
全0全1张量
data1 = torch.zeros(2, 3)
data2 = torch.zeros_like(data1)
# 全1张量
data3 = torch.ones(2, 3)
data4 = torch.ones_like(data3)
# 全指定值张量
data5 = torch.full([2, 3], 10)
data6 = torch.full_like(data5, 20)
3.张量的基本操作
# 张量加法
result_add = matrix + matrix
print("加法结果:\n", result_add)
# 张量乘法(逐元素乘法)
result_mul = matrix * matrix
print("逐元素乘法结果:\n", result_mul)
# 张量乘法(矩阵乘法)
result_matmul = torch.matmul(matrix, torch.tensor([[1], [1], [1]]))
print("矩阵乘法结果:\n", result_matmul)
# 张量转置
result_transpose = matrix.T
print("转置结果:\n", result_transpose)
# 张量的均值
mean_val = matrix.mean()
print("均值:", mean_val)
# 张量的最大值
max_val = matrix.max()
print("最大值:", max_val)
# 张量的最小值
min_val = matrix.min()
print("最小值:", min_val)
4.张量的求导
# 创建一个需要求导的张量
x = torch.tensor([2.0, 3.0], requires_grad=True)
# 进行一些操作
y = x**2 + 2*x + 1
# 计算梯度
y.sum().backward()
print("x 的梯度:", x.grad)