即看即用 && Reduction Ops && Pytorch官方文档总结 && 笔记 (五)

(1)本文涉及函数的列表(注释在代码中)

  1. torch.cumprod                                # 累积积
  2. torch.cumsum                                 # 累积和
  3. torch.dist                                         # p-范数(空间范数)
  4. torch.mean                                      # 所有元素的均值 / 指定维度的均值
  5. torch.median                                   # 中位数
  6. torch.mode                                      # 众数
  7. torch.norm                                       # p-范数,同dist相似
  8. torch.prod                                        # 积
  9. torch.std                                          # 标准差
  10. torch.sum                                        # 和
  11. torch.var                                          # 方差

注意:

  • 从此文章开始,部分函数的返回值不只是一个值返回值包含 values ans indices ;
  • 求张量中的均值、众数......,可以是所有元素,也可以是指定维度;
  • 范数在处理数据过程中,也有很大的作用。

(2)代码示例(含注释)

"""
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**************************************************************************************************************
>>>如有疑问,欢迎评论区一起探讨

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Flying Bulldog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值