Pytorch学习之torch----创建操作

1. torch.eye(n, m=None, out=None)

说明: 创建一个2维张量,对角线数字为1, 其他位置为0。也就是一个单位矩阵。

参数:

  • n – 行数,
  • m – 列数,如果为None,默认等于n,
  • out – 输出张量
>>> import torch
>>> torch.eye(3)
tensor([[1., 0., 0.],
        [0., 1., 0.],
        [0., 0., 1.]])
>>> torch.eye(3, 4)
tensor([[1., 0., 0., 0.],
        [0., 1., 0., 0.],
        [0., 0., 1., 0.]])

2. torch.from_numpy(ndarray)

说明: 将numpy.ndarray转换为Tensor。返回的Tensor和numpy的ndarray共享同一内存空间。修改一个会导致另外一个也被修改。返回的张量不能调整大小。

>>> import numpy
>>> a = numpy.array([1, 2, 3])
>>> t = torch.from_numpy(a)
>>> t
tensor([1, 2, 3], dtype=torch.int32)
>>> t[0] = -1
>>> a
array([-1,  2,  3])

3. torch.linspace(start, end, steps=100, out=None)

说明: 返回start和end之间长度为steps的一维张量,也就是start和end之间的steps个数。并且其返回的是一个等差数列。
参数:

  • start(float) – 点集的起始值,
  • end(float) – 点集的最终值,
  • steps(int) – start和end之间的采样数,即返回多少个数
  • out(Tensor,可选) – 结果张量
>>> torch.linspace(-10, 10, steps=5)
tensor([-10.,  -5.,   0.,   5.,  10.])
>>> torch.linspace(0, 5, 5)
tensor([0.0000, 1.2500, 2.5000, 3.7500, 5.0000])
>>> torch.linspace(start=-10, end=10, steps=10)
tensor([-10.0000,  -7.7778,  -5.5556,  -3.3333,  -1.1111,   1.1111,   3.3333,
          5.5556,   7.7778,  10.0000])

4. torch.logspace(start, end, steps=100, out=None)

说明: 返回一个1维张量,包含在区间和上,以对数刻度均匀间隔的steps个点。输出1维张量的长度为steps。
参数:

  • start(float) – 点集的起始点
  • end(float) – 点集的最终点
  • steps(int) – 在start和end间生成的样本数
  • out(Tensor,可选) – 结果张量
>>> torch.logspace(start=-10, end=10, steps=5)
tensor([1.0000e-10, 1.0000e-05, 1.0000e+00, 1.0000e+05, 1.0000e+10])
>>> torch.logspace(0.1, 1.0, 5)
tensor([ 1.2589,  2.1135,  3.5481,  5.9566, 10.0000])

5. torch.ones(*sizes, out=None)

说明: 返回一个全为1的张量,形状由可变参数sizes定义。
参数:

  • sizes(int) – 整数序列,定义了输出的形状。如(3,3)
  • out(Tensor, 可选) – 结果张量
>>> torch.ones(2, 3)
tensor([[1., 1., 1.],
        [1., 1., 1.]])
>>> torch.ones(5)
tensor([1., 1., 1., 1., 1.])

6. torch.rand(*size, out=None)

说明: 返回一个张量,填充在[0,1]区间的一组均匀分布随机数。Tensor的形状由变量sizes定义。
参数:

  • sizes(int) – 整数序列,定义了输出形状
  • out(Tensor, 可选) – 结果张量
>>> torch.rand(4)
tensor([0.4962, 0.0724, 0.0478, 0.3524])
>>> torch.rand(2, 3)
tensor([[0.3200, 0.7308, 0.3226],
        [0.8039, 0.2359, 0.7256]])

7. torch.randn(*size, out=None)

说明: 返回一个张量,包含了从正态分布(均值为0,方差为1)中抽取一组随机数。Tensor的形状由变量sizes定义。
参数:

  • sizes(int) – 整数序列,定义了输出形状
  • out(Tensor, 可选) – 结果张量
>>> torch.randn(4)
tensor([ 0.3094,  0.4774, -0.1807,  0.9894])
>>> torch.randn(2, 3)
tensor([[-0.3299, -0.0495, -1.4758],
        [-0.0680, -0.3875,  0.9846]])

8. torch.randperm(n, out=None)

说明: 返回以LongTenor,输入参数n,返回一个从0到n-1的随机整数排列。
参数:

  • n(int) – 上限,即最大值。
>>> torch.randperm(4)
tensor([3, 1, 0, 2])

9. torch.arange(start, end, step=1, out=None)

说明: 返回一个1维张量,长度为,中间计算值,向下取整的意思。包含从start到end,以step为步长的一组序列值。默认步长为1。
参数:

  • start(float) – 该点集的起始点
  • end(float) – 点集的终止点
  • step(float) – 相邻点的间隔大小
  • out(Tensor, 可选的) – 结果张量
>>> torch.arange(1, 4)
tensor([1, 2, 3])
>>> torch.arange(1, 2.5, 0.5)
tensor([1.0000, 1.5000, 2.0000])

10. torch.range(start, end, step=1, out=None)

说明: 返回一维张量,长度为+1,从start开始,到end结束。以step为步长的一组值。step是两个值之间的间隔。
参数:

  • start(float) – 点集的起始点
  • end(float) – 点集的最终值
  • step(int) – 相邻点之间的间隔大小
  • out(Tensor, 可选的) – 结果张量
>>> torch.range(1, 4)
__main__:1: UserWarning: torch.range is deprecated in favor of torch.arange and will be removed in 0.5. Note that arange generates values in [start; end), not [start; end].
tensor([1., 2., 3., 4.])
>>> torch.range(1, 4)
tensor([1., 2., 3., 4.])
>>> torch.range(1, 4, 0.5)
tensor([1.0000, 1.5000, 2.0000, 2.5000, 3.0000, 3.5000, 4.0000])

11. torch.zeros(*size, out=None)

说明:返回一个全0的张量,形状由可变参数sizes定义。
参数:

  • sizes(int) – 整数序列,定义了输出形状
  • out(Tensor, 可选) – 结果张量
>>> torch.zeros(2, 3)
tensor([[0., 0., 0.],
        [0., 0., 0.]])
>>> torch.zeros(5)
tensor([0., 0., 0., 0., 0.])

总结: 这部分内容主要是创建操作,创建一些随机数,或者是矩阵。在pytorch中,他们都是张量类型。简单的创建操作。反复练习。方可掌握。如果有numpy的基础。那就更加容易学习。其实无论numpy,tensorflow,pytorch等。在创建一些随机数/矩阵中,他们都是相同的。只不过是存在不同的第三方库中。


   转载规则


《Pytorch学习之torch----创建操作》 郭远涛 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
Pytorch学习之torch----索引、切片、连接、变异操作 Pytorch学习之torch----索引、切片、连接、变异操作
1. torch.cat(seq, dim=0, out=None)说明: 在给定维度上对输入的张量序列seq进行连接操作参数: seq(Tensor的序列) – 可以是相同类型的Tensor的任何Python序列 dim(int, 可选
2019-06-22
本篇 
Pytorch学习之torch----创建操作 Pytorch学习之torch----创建操作
Pytorch是一个比较好的框架。和TensorFlow并列为现在的主流框架中最好的框架。
2019-06-21
  目录