PyTorch自由创建tensor的多种方法

基于已有数据创建tensor

from numpy

a = np.array([2,3,4])
a = torch.from_numpy(a)
print(a)  #tensor([2, 3, 4], dtype=torch.int32)

a1 = torch.tensor(np.array([[1, 2, 3], [4, 5, 6]]))
print(a1)   # tensor([[1, 2, 3], [4, 5, 6]], dtype=torch.int32)

from list

a3 = torch.Tensor([1,2,3]) # tensor([1., 2., 3.])
a4 = torch.Tensor((2,3)) # tensor([2., 3.])
a5 = torch.tensor([[1,2],[3,4]]) # tensor([[1, 2], [3, 4]])
a6 = torch.Tensor(1,2) # tensor([[0., 0.]])
a7 = torch.DoubleTensor(1,2) # tensor([[0., 0.]], dtype=torch.float64)

tensor 与 Tensor区别:

  • tensor是一个方法,Tensor是一个类,所有的张量方法(tensor(), FloatTensor())都继承它。
  • 使用上,tensor只能使用已知数据创建,根据数据自动指定数据类型;Tensor即可以根据数据创建,也可以根据形状创建,同时默认数据数据为float。
  • 推荐使用tensor。

基于形状创建tensor,数据随机

b1 = torch.rand(1,2) # tensor([[0.0941, 0.6547]]) 从(0,1)的均匀分布采样
b2 = torch.randn(1,2) #tensor([[ 1.2337, -1.2270]]) 从(0,1)的正态分布采样
b3 = torch.randint(0,10,size=(1,2)) # tensor([[3, 7]]) 指定low high 和size 采样
b4 = torch.arange(0,10,2) #tensor([0, 2, 4, 6, 8]) 指定范围和步长采样
b5 = torch.linspace(0,10,5) #tensor([ 0.0000,  2.5000,  5.0000,  7.5000, 10.0000]) 指定范围和采样个数采样
b6 = torch.logspace(start=0,end=4,steps=2,base=2) #tensor([ 1., 16.]) base的指数2^0 2^4,base default 10
b7 = torch.randperm(10) #tensor([5, 0, 6, 8, 9, 7, 3, 2, 1, 4]) 返回0 - n-1的随机排列

特殊tensor

c1 = torch.zeros((1,2)) #tensor([[0., 0.]])  全0
c2 = torch.ones((1,2)) #tensor([[1., 1.]]) 全1 
c3 = torch.eye(2,2) # tensor([[1., 0.],[0., 1.]]) 对角矩阵
c4 = torch.full(size=(1,2),fill_value=10,dtype=torch.float32) #tensor([[10., 10.]]) 制定size value的全value矩阵
c5 = torch.empty((2,2,)) #tensor([[0., 0.], [0., 0.]]) 指定size 创建一个空矩阵

设置数据类型(不涉及类型转换)

图片来自官网

# 可以通过的dtype 参数指定表格中的type列所有的数据类型
# 可以通过type()方法查看所有的类型,对应表格中cpu列或者gpu列
d1 = torch.rand((1,2),dtype=torch.float32) # tensor([[0.6211, 0.1567]]) 
print(d1.type()) # print(d1.type()) 
d2 = torch.rand((1,2),dtype=torch.float64,device=torch.device('cuda'))
print(d2) # tensor([[0.1526, 0.5732]], device='cuda:0', dtype=torch.float64)

PS:都是参考官网和博客的自行测试,欢迎补充,谢谢大家:)在这里插入图片描述

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值