提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
代码是d2l的锚框构建
一、torch.meshgrid()
torch.meshgrid()生成坐标。函数输入两个数据类型相同的一维张量。
两个输出张量的行数为第一个输入张量的元素个数,列数为第二个输入张量的元素个数,当两个输入张量数据类型不同或维度不是一维时会报错。
import torch
a=torch.tensor([3,7,9])
b=torch.tensor([0,1])
print(torch.meshgrid(a,b))
(tensor([[3, 3],
[7, 7],
[9, 9]]), tensor([[0, 1],
[0, 1],
[0, 1]]))
二、torch.stack()
b=torch.tensor([0,1,2])
a=torch.tensor([3,7,9])
print(torch.stack([a,b],dim=0))
tensor([[3, 7, 9],
[0, 1, 2]])
print(torch.stack([a,b],dim=1))
tensor([[3, 0],
[7, 1],
[9, 2]])
三、repeat_interleave()
repeat_interleave是将张量中的元素沿某一维度复制n次
a=torch.tensor([[3,7,9]])
print(a.repeat_interleave(3, dim=0))
tensor([[3, 7, 9],
[3, 7, 9],
[3, 7, 9]])
print(a.repeat_interleave(3, dim=1))
tensor([[3, 3, 3, 7, 7, 7, 9, 9, 9]])
四、[:, None, :2]
我的理解是维度扩展,加上torch.max看的是一头雾水,但是自己找点例子就好了,是有一个广播机制在里面的
print(a)
tensor([[10, 11, 12, 13],
[14, 15, 16, 17]])
print(b)
tensor([[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16]])
c=torch.max(a[:,None,:2],b[:,2:])
print(c)
tensor([[[10, 11],
[11, 12],
[15, 16]],
[[14, 15],
[14, 15],
[15, 16]]])
print(a[:,None,:2])
tensor([[[10, 11]],
[[14, 15]]])
print(b[:,2:])
tensor([[ 7, 8],
[11, 12],
[15, 16]])
再举一个例子;
print(b[:,None])
tensor([[2],
[3],
[4],
[5]])
print(a)
tensor([2, 3, 4, 5])
print(b[:,None]+a)
tensor([[ 4, 5, 6, 7],
[ 5, 6, 7, 8],
[ 6, 7, 8, 9],
[ 7, 8, 9, 10]])
五、clamp(min = 0)
小relu,小于0的抹去成0
六、torch.nonzero
非零元素的索引
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
七、squeeze()
压缩!
输入的数字是几就代表着在第几维度压缩或者加入(应该-。-)
八、repeat( 1, 4)
行复制1倍数,列四倍