改变向量形状

 features = torch.sum(torch.abs(feats), 1).reshape(-1, 1)

import torch
feats = torch.randn(4, 10)
print(feats)
features_pre = torch.sum(torch.abs(feats), 1)
print(features_pre)
features = torch.sum(torch.abs(feats), 1).reshape(-1, 1)
print(features)

 torch.sum(torch.abs(feats), 1).的1是什么意思

在 PyTorch 中,当使用 torch.sum() 函数时,第二个参数(这里是 1)指定了要沿哪个维度进行求和的操作。具体来说,这个参数是沿着哪个轴(axis)或维度(dimension)来对元素进行加和。

参数解释:

  • 1:表示沿着张量的第二个维度进行求和。

假设 feats 是一个二维张量,其中维度 0 通常代表批处理中的样本索引,维度 1 代表每个样本的特征。在这个上下文中,1 指的是沿着每个样本的特征维度进行求和。

示例:

考虑一个张量 feats 大小为 (batch_size, num_features)

feats = torch.tensor([[1, 2, 3],
                      [4, 5, 6],
                      [7, 8, 9]])

这个张量的形状是 (3, 3),即 batch_size = 3num_features = 3

执行下面的求和操作:

torch.sum(feats, 1)

该操作会沿着每一行(即每个样本的特征向量),对元素进行求和。结果是一个新的一维张量,每个元素是原来矩阵中对应行的元素之和:

[ 6, 15, 24]

这里,6 是第一行 [1, 2, 3] 的和,15 是第二行 [4, 5, 6] 的和,24 是第三行 [7, 8, 9] 的和。

在神经网络中的应用:

在神经网络中,这样的操作通常用于从层输出中生成特征描述符,其中每个样本的所有特征被合并为一个单一的统计量(如特征的绝对值和)。这可以作为后续层的输入,或用于损失函数计算,以便根据整体特征活跃度调整样本的权重,这是处理不平衡数据或增强模型焦点的常用技术。

在上下文中使用 torch.abs() 表示在求和前取绝对值,这通常用于确保所有贡献都是正的,特别是在特征可能有正负值的情况下。这可以帮助模型更好地理解输入数据中特征的总活跃度,而不是仅关注其正负方向。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值