机器学习——降维
默认情况下,调用求和函数会沿所有的轴降低张量的维度,使它变为一个标量。
1 2 | x = torch.arange( 4 , dtype = torch.float32) x, x. sum () |
(tensor([0., 1., 2., 3.]), tensor(6.))
我们还可以指定张量沿哪一个轴来通过求和降低维度。 以矩阵为例,为了通过求和所有行的元素来降维(轴0),可以在调用函数时指定axis=0
。 由于输入矩阵沿0轴降维以生成输出向量,因此输入轴0的维数在输出形状中消失。
1 | A |
(tensor([[ 0., 1., 2., 3.], [ 4., 5., 6., 7.], [ 8., 9., 10., 11.], [12., 13., 14., 15.], [16., 17., 18., 19.]]),
1 2 | A_sum_axis0 = A. sum (axis = 0 ) A_sum_axis0, A_sum_axis0.shape |
(tensor([40., 45., 50., 55.]), torch.Size([4]))
指定axis=1
将通过汇总所有列的元素降维(轴1)。因此,输入轴1的维数在输出形状中消失。
1 2 | A_sum_axis1 = A. sum (axis = 1 ) A_sum_axis1, A_sum_axis1.shape |
(tensor([ 6., 22., 38., 54., 70.]), torch.Size([5]))
一个与求和相关的量是平均值(mean或average)。 我们通过将总和除以元素总数来计算平均值。 在代码中,我们可以调用函数来计算任意形状张量的平均值。
1 | A.mean() |
(tensor(9.5000), tensor(9.5000))
同样,计算平均值的函数也可以沿指定轴降低张量的维度。
1 | A.mean(axis = 0 ) |
(tensor([ 8., 9., 10., 11.]), tensor([ 8., 9., 10., 11.]))
但是,有时在调用函数来计算总和或均值时保持轴数不变会很有用。
1 2 | sum_A = A. sum (axis = 1 , keepdims = True ) sum_A |
tensor([[ 6.], [22.], [38.], [54.], [70.]])
例如,由于sum_A
在对每行进行求和后仍保持两个轴,我们可以通过广播将A
除以sum_A
。
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现