1.torch.clamp(input, min, max, out=None) → Tensor
将输入的input张量每个元素的夹紧到区间[min, max],并返回得到一个新张量。
操作定义如下:
| min, if x_i < min
y_i = | x_i, if min <= x_i <= max
| max, if x_i > max
- input (Tensor) – 输入张量
- min (Number) – 限制范围下限
- max (Number) – 限制范围上限
- out (Tensor, optional) – 输出张量
>>> a = torch.randn(4)
>>> a
1.3869
0.3912
-0.8634
-0.5468
[torch.FloatTensor of size 4]
>>> torch.clamp(a, min=-0.5, max=0.5)
0.5000
0.3912
-0.5000
-0.5000
[torch.FloatTensor of size 4]
2.pytorch中的expand函数
>>> import torch
>>> a=torch.tensor([[2],[3],[4]])
>>> print(a.size())
torch.Size([3, 1])
>>> a.expand(3,2)
tensor([[2, 2],
[3, 3],
[4, 4]])
>>> a
tensor([[2],
[3],
[4]])
扩大tensor不需要分配新内存,只是仅仅新建一个tensor的视图。
3.cosine_similarity 余弦相似度
输出范围是[-1, 1]之间,相似度越大,越接近1,相似度越小,越接近-1。
4.pytoch中的topk()
沿给定dim维度返回输入张量input中 k 个最大值。
如果不指定dim,则默认为input的最后一维。
如果为largest为 False ,则返回最小的 k 个值。
返回一个元组 (values,indices),其中indices是原始输入张量input中测元素下标。
如果设定布尔值sorted 为_True_,将会确保返回的 k 个值被排序。
参数:
input (Tensor) – 输入张量
k (int) – “top-k”中的k
dim (int, optional) – 排序的维
largest (bool, optional) – 布尔值,控制返回最大或最小值
sorted (bool, optional) – 布尔值,控制返回值是否排序
out (tuple, optional) – 可选输出张量 (Tensor, LongTensor) output buffer
>>> x = torch.arange(1., 6.)
>>> x
tensor([ 1., 2., 3., 4., 5.])
>>> torch.topk(x, 3)
(tensor([ 5., 4., 3.]), tensor([ 4, 3, 2]))
import torch
output = torch.tensor([[-5.4783, 0.2298],
[-4.2573, -0.4794],
[-0.1070, -5.1511],
[-0.1785, -4.3339]])
maxk = max((1,)) # 取top1准确率,若取top1和top5准确率改为max((1,5))
_, pred = output.topk(maxk, 1, True, True)
# 输出
_
tensor([[ 0.2298],
[-0.4794],
[-0.1070],
[-0.1785]])
pred
tensor([[1],
[1],
[0],
[0]])
_是top1的值,pred是最大值的索引。