Tensor与numpy相互转换: torch.ones(),torch.add(),torch.zeros(),torch.squeeze()

目录

 

Tensor与numpy相互转换:

torch.ones(),torch.add(),torch.zeros(),torch.squeeze()


Tensor与numpy相互转换:


 
 
  1. import torch
  2. x=torch.Tensor( 2, 3) #生成一个4*5的Tensor张量
  3. 将Tensor转换为numpy数组
  4. y=x.numpy()
  5. 将numpy数组转换为Tensor
  6. import numpy as np
  7. z=torch.from_numpy(x)

torch.ones(),torch.add(),torch.zeros(),torch.squeeze()

torch.ones()

torch.ones(*sizes, out=None) → Tensor
 
 

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

参数:

 

  • sizes (int...) – 整数序列,定义了输出形状
  • out (Tensor, optional) – 结果张量 例子:

 
 
  1. >>> torch .ones(2, 3)
  2. 1 1 1
  3. 1 1 1
  4. [torch.FloatTensor of size 2x3]
  5. >>> torch .ones(5)
  6. 1
  7. 1
  8. 1
  9. 1
  10. 1
  11. [torch.FloatTensor of size 5]

 torch.add()


 
 
  1. torch. add(input, value, out=None)
  2. 对输入张量input逐元素加上标量值 value,并返回结果到一个新的张量 out,即 out=tensor+ value
  3. torch. add(input, value= 1, other, out=None)
  4. other 张量的每个元素乘以一个标量值 value,并加到iput 张量上。返回结果到输出张量 out。即, out=input+(other∗ value)
  5. 两个张量 input and other的尺寸不需要匹配,但元素总数必须一样。
  6. 注意 :当两个张量形状不匹配时,输入张量的形状会作为输出张量的尺寸。

torch.zeros() 

torch.zeros(*sizes, out=None) → Tensor

 
 

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

参数:

  • sizes (int...) – 整数序列,定义了输出形状
  • out (Tensoroptional) – 结果张量

例子:


 
 
  1. >>> torch.zeros( 2, 3)
  2. 0 0 0
  3. 0 0 0
  4. [ torch.FloatTensor of size 2x3]生成 2* 3的张量矩阵
  5. >>> torch.zeros( 5)
  6. 0
  7. 0
  8. 0
  9. 0
  10. 0
  11. [ torch.FloatTensor of size 5]
  12. x=torch.zeros( 2, 3, 4)
  13. print(x)
  14. tensor([[[ 0., 0., 0., 0.],
  15. [ 0., 0., 0., 0.],
  16. [ 0., 0., 0., 0.]],
  17. [ [0., 0., 0., 0.],
  18. [ 0., 0., 0., 0.],
  19. [ 0., 0., 0., 0.]]])生成 23* 4的矩阵
  20. x=torch.zeros( 2, 3, 4, 5)
  21. print(x)
  22. tensor([[[[ 0., 0., 0., 0., 0.],
  23. [ 0., 0., 0., 0., 0.],
  24. [ 0., 0., 0., 0., 0.],
  25. [ 0., 0., 0., 0., 0.]],
  26. [ [0., 0., 0., 0., 0.],
  27. [ 0., 0., 0., 0., 0.],
  28. [ 0., 0., 0., 0., 0.],
  29. [ 0., 0., 0., 0., 0.]],
  30. [ [0., 0., 0., 0., 0.],
  31. [ 0., 0., 0., 0., 0.],
  32. [ 0., 0., 0., 0., 0.],
  33. [ 0., 0., 0., 0., 0.]]],
  34. [ [[0., 0., 0., 0., 0.],
  35. [ 0., 0., 0., 0., 0.],
  36. [ 0., 0., 0., 0., 0.],
  37. [ 0., 0., 0., 0., 0.]],
  38. [ [0., 0., 0., 0., 0.],
  39. [ 0., 0., 0., 0., 0.],
  40. [ 0., 0., 0., 0., 0.],
  41. [ 0., 0., 0., 0., 0.]],
  42. [ [0., 0., 0., 0., 0.],
  43. [ 0., 0., 0., 0., 0.],
  44. [ 0., 0., 0., 0., 0.],
  45. [ 0., 0., 0., 0., 0.]]]])
  46. 从后向前看,最后两位为数组的维度 4* 5,前一位 3表示有 34* 5的矩阵,在前一位 2表示,这样 34* 5的矩阵有 2个,以此类推

torch.squeeze()


 
 
  1. torch.squeeze(input, dim=None, out=None)
  2. 将输入张量形状中的 1 去除并返回。 如果输入是形如(A× 1×B× 1×C× 1×D),那么输出形状就为: (A×B×C×D)
  3. 当给定dim时,那么挤压操作只在给定维度上。例如,输入形状为: (A× 1×B), squeeze(input, 0) 将会保持张量不变,只有用 squeeze(input, 1),形状会变成 (A×B)。
  4. 注意: 返回张量与输入张量共享内存,所以改变其中一个的内容会改变另一个。
  5. 参数:
  6. input (Tensor) – 输入张量
  7. dim (int, optional) – 如果给定,则input只会在给定维度挤压
  8. out (Tensor, optional) – 输出张量
  9. 例子:
  10. >>> x = torch.zeros( 2, 1, 2, 1, 2)
  11. >>> x.size()
  12. ( 2L, 1L, 2L, 1L, 2L)
  13. >>> y = torch.squeeze(x)
  14. >>> y.size()
  15. ( 2L, 2L, 2L)
  16. >>> y = torch.squeeze(x, 0)
  17. >>> y.size()
  18. ( 2L, 1L, 2L, 1L, 2L)
  19. >>> y = torch.squeeze(x, 1)
  20. >>> y.size()
  21. ( 2L, 2L, 1L, 2L)

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值