返回一个2维张量,对角线位置全1,其它位置全0,返回值类型Tensor
torch.eye(n, m=None, out=None)
参数:
torch.eye(3)
tensor([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
torch.linspace(start, end, steps=100, out=None) → Tensor
返回一个1维张量,包含在区间start
和 end
上均匀间隔的steps
个点。 输出1维张量的长度为steps
。注意steps不是步长。
参数:
torch.linspace(3, 12, steps=5)
tensor([ 3.0000, 5.2500, 7.5000, 9.7500, 12.0000])
rand是[0,1)均匀分布,randn是标准正太分布
torch.rand(*sizes, out=None) → Tensor
torch.randn(*sizes, out=None) → Tensor
形状由可变参数size
确定
x = torch.rand(2,2)
x
tensor([[0.9483, 0.6083],
[0.0579, 0.0638]])
y = torch.randn(3,3)
y
tensor([[ 0.3220, -2.4360, -0.0790],
[-0.1366, -0.5444, 1.4342],
[ 0.7295, -1.3341, 0.2022]])
类似的ones,zeros用法跟上面一样。
torch.arange(start, end, step=1, out=None) → Tensor
torch.range(start, end, step=1, out=None) → Tensor
返回一个1维张量,长度为 floor((end−start)/step)。包含从start到end,以step为步长的一组序列值(默认步长为1)
参数:
torch.arange()
,另外,python讲究左闭右开torch.arange(1,50,10)
tensor([ 1, 11, 21, 31, 41])
torch.cat(inputs, dimension=0) → Tensor
在给定维度上对输入的张量序列seq 进行连接操作。
参数:
## 例子
x = torch.randn(1,3)
x
tensor([[-0.0675, -0.5289, -0.3090]])
y = torch.cat((x,x,x),0)
y
tensor([[-0.0675, -0.5289, -0.3090],
[-0.0675, -0.5289, -0.3090],
[-0.0675, -0.5289, -0.3090]])
z = torch.cat((x,x,x),1)
z
tensor([[-0.0675, -0.5289, -0.3090, -0.0675, -0.5289, -0.3090, -0.0675, -0.5289,
-0.3090]])
torch.chunk(),torch.gather(),torch.index_select(),torch.masked_select()查看官方文档:https://pytorch-cn.readthedocs.io/zh/latest/package_references/torch/
torch.squeeze(input, dim=None, out=None)
将输入张量形状中的1去除并返回。 如果输入是形如(A×1×B×1×C×1×D),那么输出形状就为: (A×B×C×D)
当给定dim时,那么挤压操作只在给定维度上。例如,输入形状为: (A×1×B), squeeze(input, 0)
将会保持张量不变,只有用 squeeze(input, 1)
,形状会变成 (A×B)。
注意: 返回张量与输入张量共享内存,所以改变其中一个的内容会改变另一个。
参数:
input
只会在给定维度挤压# 例
x = torch.ones(2,1,2,1,2)
x.size()
torch.Size([2, 1, 2, 1, 2])
y = torch.squeeze(x)
y.size()
torch.Size([2, 2, 2])
y = torch.squeeze(x, 0)
y.size()
torch.Size([2, 1, 2, 1, 2])
y = torch.squeeze(x, 1)
y.size()
torch.Size([2, 2, 1, 2])
torch.unsqueeze(input, dim, out=None)
返回一个新的张量,对输入的指定位置插入维度 1
注意: 返回张量与输入张量共享内存,所以改变其中一个的内容会改变另一个。
# 例
x = torch.Tensor([1,2,3]) # 这里tensor小写大写没有区别
y = torch.unsqueeze(x,0)
z = torch.unsqueeze(x, 1)
print(y)
print(z)
tensor([[1., 2., 3.]])
tensor([[1.],
[2.],
[3.]])
z
tensor([[1.],
[2.],
[3.]])
torch.t(z)
tensor([[1., 2., 3.]])
参考:
PyTorch中文文档