深度学习数据处理与代数基础

torch数据处理
1.标量scalar
即0阶张量

import torch
x=torch.tensor([3.0])
y=torch.tensor([4.0])
print(x+y)
print(x*y)

2.向量 vector(一阶张量)
即标量值组成的列表
并将这些标量值称为向量的元素(elements) 或分量(components)
向量的长度通常称为向量的维度(dimension)

x=torch.arange(4)
print(x)
print(len(x))
print(x.shape)

3.矩阵 matrix (二阶张量)

A=torch.arange(20).reshape(5,4) #5行4列矩阵
#或者直接设置  B = torch.tensor([[1, 2, 3], [2, 0, 4], [3, 4, 5]])
A.T  #转置

还有一些特殊的矩阵
如:正定矩阵,正交矩阵,置换矩阵,对称矩阵等等
4.张量 (推广)
图像处理时,图像以n维数组形式出现,其中3个轴对应于高度、宽度,
以及一个通道(channel)轴,用于堆叠颜色通道(RGB)

X = torch.arange(24).reshape(2, 3, 4)
print(X)

上述X为2行3列4个通道的三维数组(三阶张量)
详解见

降维
可以表示任意形状张量的元素和

print(A.shape, A.sum())

默认情况下,调用求和函数会沿所有的轴降低张量的维度,使它变为一个标量。 我们还可以指定张量沿哪一个轴来通过求和降低维度。以矩阵为例,为了通过求和所有行的元素来降维(轴0),我们可以在调用函数时指定axis=0
axis = 0按照行,可以理解为把“行”给抹去只剩1行,也就是上下压扁。
axis = 1按照列,可以理解为把“列”给抹去只剩1列,也就是左右压扁。

A1= A.sum(axis=0)
print(A1, A1.shape)

输出结果为(tensor([40., 45., 50., 55.]), torch.Size([4]))

指定axis=1将通过汇总所有列的元素降维(轴1)

A2= A.sum(axis=1)
print(A1, A1.shape)

输出结果为(tensor([ 6., 22., 38., 54., 70.]), torch.Size([5]))

平均值

print(A3.mean)
print(A3.mean(axis=0))

有时在调用函数来计算总和或均值时保持轴数不变会很有用

A4=A.sum(axis=1,keepdims=True)

输出为
tensor([[ 6.], [22.], [38.], [54.], [70.]])

向量点积

x=torch.tensor([0., 1., 2., 3.])
y=torch.tensor([1., 1., 1., 1.])
torch.dot(x, y)

我们可以通过执行按元素乘法,然后进行求和来表示两个向量的点积

torch.sum(x*y)

点积在很多场合都很有用。例如,给定一组由向量x∈Rd表示的值,和一组由w∈R表示的权重。x中的值根据权重w的加权和可以表示为点积x⊤w。当权重为非负数且和为1时,点积表示加权平均(weighted average)

矩阵乘法

A = torch.arange(20).reshape(5,4)
B = torch.ones(4, 3)
torch.mm(A, B)

输出为

tensor([[ 6.,  6.,  6.],
        [22., 22., 22.],
        [38., 38., 38.],
        [54., 54., 54.],
        [70., 70., 70.]])

特别注意:两个矩阵的按元素乘法被称为他们的哈达玛积 与 矩阵乘积 不同

范数
norms
非正式地说,一个向量的范数告诉我们一个向量有多大。 这里考虑的大小(size)概念不涉及维度,而是分量的大小

说人话就是:矩阵中每一个元素的平法和再开根
不过还有几种不同的范数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值