Tensor:逐元素操作

逐元素操作

这部分操作会对tensor的每一个元素(point-wise,又名element-wise)进行操作,此类操作的输入与输出形状一致。常用的操作如表3-4所示。

表3-4: 常见的逐元素操作

函数功能
abs/sqrt/div/exp/fmod/log/pow..绝对值/平方根/除法/指数/求余/求幂..
cos/sin/asin/atan2/cosh..相关三角函数
ceil/round/floor/trunc上取整/四舍五入/下取整/只保留整数部分
clamp(input, min, max)超过min和max部分截断
sigmod/tanh..激活函数

对于很多操作,例如div、mul、pow、fmod等,PyTorch都实现了运算符重载,所以可以直接使用运算符。如a ** 2 等价于torch.pow(a,2)a * 2等价于torch.mul(a,2)

其中clamp(x, min, max)的输出满足以下公式:

clamp常用在某些需要比较大小的地方,如取一个tensor的每个元素与另一个数的较大值。

In [71]:

a = t.arange(0, 6).view(2, 3).float()
t.cos(a)

Out[71]:

tensor([[ 1.0000,  0.5403, -0.4161],
        [-0.9900, -0.6536,  0.2837]])

In [72]:

a % 3 # 等价于t.fmod(a, 3)

Out[72]:

tensor([[0., 1., 2.],
        [0., 1., 2.]])

In [73]:

a ** 2 # 等价于t.pow(a, 2)

Out[73]:

tensor([[ 0.,  1.,  4.],
        [ 9., 16., 25.]])

In [74]:

# 取a中的每一个元素与3相比较大的一个 (小于3的截断成3)
print(a)
t.clamp(a, min=3)
tensor([[0., 1., 2.],
        [3., 4., 5.]])

Out[74]:

tensor([[3., 3., 3.],
        [3., 4., 5.]])

In [75]:

b = a.sin_() # 效果同 a = a.sin();b=a ,但是更高效节省显存
a

Out[75]:

tensor([[ 0.0000,  0.8415,  0.9093],
        [ 0.1411, -0.7568, -0.9589]])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值