注意:
- torch.cumprod # 累积积
- torch.cumsum # 累积和
- torch.dist # p-范数(空间范数)
- torch.mean # 所有元素的均值 / 指定维度的均值
- torch.median # 中位数
- torch.mode # 众数
- torch.norm # p-范数,同dist相似
- torch.prod # 积
- torch.std # 标准差
- torch.sum # 和
- torch.var # 方差
- 从此文章开始,部分函数的返回值不只是一个值,返回值包含 values ans indices ;
- 求张量中的均值、众数......,可以是所有元素,也可以是指定维度;
- 范数在处理数据过程中,也有很大的作用。
"""
Reduction Ops
"""
import torch
# # 返回输入沿指定维度的累积积。
# # 例如,如果输入是一个 N 元向量,则结果也是一个 N 元向量,
# 第 i 个输出元素值为 yi=x1∗x2∗x3∗...∗xi
obj1 = torch.cumprod(torch.tensor([2, 3, 5]), dim=0)
# # 返回输入沿指定维度的累积和。
# # 例如,如果输入是一个 N 元向量,则结果也是一个 N 元向量,
# 第 i 个输出元素值为 yi=x1+x2+x3+...+xi
obj2 = torch.cumsum(torch.tensor([[1, 3, 3], [3, 3, 5], [6, 7, 8]]), dim=0) # y轴方向
obj3 = torch.cumsum(torch.tensor([[1, 3, 3], [3, 3, 5], [6, 7, 8]]), dim=1) # x轴方向
# # 返回 (input - other) 的 p 范数。
# 此处指的是空间范数,见p-fanshu.png
x = torch.arange(2.0, 6.0, 1)
y = torch.arange(1.0, 5.0, 1)
obj4 = torch.dist(x, y, p=4)
# # 返回输入张量所有元素的均值。(float)
obj5 = torch.mean(torch.tensor([[1.0, 3.0, 3.0], [3.0, 3.0, 5.0], [6.0, 7.0, 8.0]])) # (2+3+4+5)/4=3.5
# # 返回输入张量给定维度 dim 上每行的均值。(float)
obj6 = torch.mean(torch.tensor([[1.0, 3.0, 3.0], [3.0, 3.0, 5.0], [6.0, 7.0, 8.0]]), dim=0)
obj7 = torch.mean(torch.tensor([[1.0, 3.0, 3.0], [3.0, 3.0, 5.0], [6.0, 7.0, 8.0]]), dim=1)
# # 返回输入张量给定维度每行的中位数,同时返回一个包含中位数的索引的 LongTensor。
# # dim (int) – 缩减的维度,默认为输入张量的最后一维。
# obj8[0] = values obj8[1] = indices
obj8 = torch.median(torch.arange(1.0, 5.0, 0.5), dim=0)
values, indices = torch.median(torch.arange(1.0, 5.0, 0.5), dim=0)
# # 返回给定维 dim 上,每行的众数值。 同时返回一个 LongTensor,包含众数值的索引。
# # dim (int) – 缩减的维度,默认为输入张量的最后一维。
obj9 = torch.mode(torch.tensor([1, 2, 1, 4]))
# # 返回输入张量 input 的 p 范数。
# p (float,optional) – 范数计算中的幂指数值
# 参数类型必须全是浮点数
obj10 = torch.norm(torch.tensor([1.0, 2.0, 3.0]), p=2.0)
# # 返回输入张量 input 所有元素的积。
obj11 = torch.prod(torch.tensor([[1.0, 3.0, 3.0], [3.0, 3.0, 5.0], [6.0, 7.0, 8.0]]))
# # 返回输入张量给定维度上每行的积。 输出形状与输入相同,除了给定维度上为 1.
obj12 = torch.prod(torch.tensor([[1.0, 3.0, 3.0], [3.0, 3.0, 5.0], [6.0, 7.0, 8.0]]), dim=0)
# # 返回输入张量 input 所有元素的标准差。
obj13 = torch.std(torch.tensor([[1.0, 3.0, 3.0], [3.0, 3.0, 5.0], [6.0, 7.0, 8.0]]))
# # 返回输入张量给定维度上每行的标准差。 输出形状与输入相同,除了给定维度上为 1.
obj14 = torch.std(torch.tensor([[1.0, 3.0, 3.0], [3.0, 3.0, 5.0], [6.0, 7.0, 8.0]]), dim=1)
# # 返回输入张量 input 所有元素的和。
obj15 = torch.sum(torch.tensor([[1.0, 3.0, 3.0], [3.0, 3.0, 5.0], [6.0, 7.0, 8.0]]))
# # 返回输入张量给定维度上每行的和。 输出形状与输入相同,除了给定维度上为 1.
obj16 = torch.sum(torch.tensor([[1.0, 3.0, 3.0], [3.0, 3.0, 5.0], [6.0, 7.0, 8.0]]), dim=0)
# # 返回输入张量 input 所有元素的方差。
obj17 = torch.var(torch.tensor([[1.0, 3.0, 3.0], [3.0, 3.0, 5.0], [6.0, 7.0, 8.0]]))
# # 返回输入张量给定维度上每行的方差。 输出形状与输入相同,除了给定维度上为 1.
obj18 = torch.var(torch.tensor([[1.0, 3.0, 3.0], [3.0, 3.0, 5.0], [6.0, 7.0, 8.0]]), dim=1)
print("*"*20, "obj1", "*"*20, "\n", obj1, "\n")
print("*"*20, "obj2", "*"*20, "\n", obj2, "\n", obj3, "\n")
print("*"*20, "obj4", "*"*20, "\n", obj4, "\n")
print("*"*20, "obj5", "*"*20, "\n", obj5, "\n")
print("*"*20, "obj6", "*"*20, "\n", obj6, "\n", obj7, "\n")
print("*"*20, "obj8", "*"*20, values, "\n", indices, "\n", obj8, "\n", "\n")
print("*"*20, "obj9", "*"*20, "\n", obj9, "\n")
print("*"*20, "obj10", "*"*20, "\n", obj10, "\n")
print("*"*20, "obj11", "*"*20, "\n", obj11, "\n", obj12, "\n")
print("*"*20, "obj13", "*"*20, "\n", obj13, "\n", obj14, "\n")
print("*"*20, "obj15", "*"*20, "\n", obj15, "\n", obj16, "\n")
print("*"*20, "obj17", "*"*20, "\n", obj17, "\n", obj18, "\n")
>>>output
******************** obj1 ********************
tensor([ 2, 6, 30])******************** obj2 ********************
tensor([[ 1, 3, 3],
[ 4, 6, 8],
[10, 13, 16]])
tensor([[ 1, 4, 7],
[ 3, 6, 11],
[ 6, 13, 21]])******************** obj4 ********************
tensor(1.4142)******************** obj5 ********************
tensor(4.3333)******************** obj6 ********************
tensor([3.3333, 4.3333, 5.3333])
tensor([2.3333, 3.6667, 7.0000])******************** obj8 ********************
tensor(2.5000)
tensor(3)
torch.return_types.median(
values=tensor(2.5000),
indices=tensor(3))
******************** obj9 ********************
torch.return_types.mode(
values=tensor(1),
indices=tensor(2))
******************** obj10 ********************
tensor(3.7417)******************** obj11 ********************
tensor(136080.)
tensor([ 18., 63., 120.])******************** obj13 ********************
tensor(2.2913)
tensor([1.1547, 1.1547, 1.0000])******************** obj15 ********************
tensor(39.)
tensor([10., 13., 16.])******************** obj17 ********************
tensor(5.2500)
tensor([1.3333, 1.3333, 1.0000])
**************************************************专栏直达*************************************************
https://blog.csdn.net/qq_54185421/category_11794260.htmlhttps://blog.csdn.net/qq_54185421/category_11794260.html**************************************************************************************************************
>>>如有疑问,欢迎评论区一起探讨
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)