PyTorch中torch.tensor与torch.Tensor参数详解及异同对比

PyTorch中torch.tensor与torch.Tensor参数详解及异同对比

参数分析

tensor()方法

将其他数据类型转换为tensor型数据

torch.tensor(data,dtype=None,device=None,requires_grad=False,pin_memory=False)

参数:

参数含义
data要传入的数据,可以是列表、元组、NumPy、ndarray、标量和其他类型
dtype数据类型,默认和data类型一致,用来修改变量类型
device ( torch.device, optional)构造张量的设备。如果 None 并且数据是张量,则使用数据设备。如果 None 并且数据不是张量,则结果张量在 CPU 上构建。
requires_grad是否保留对应的梯度信息,如需要保留对应的梯度信息就要带上参数requires_grad=True,默认为False
pin_memory若值为True,返回的张量将分配在固定内存中。仅适用于 CPU 张量。默认值:False.

示例:

import torch
a=torch.tensor([1,3])
b=torch.tensor([1,3],dtype=torch.float32)
print(a)
print(b)

输出:

tensor([1, 3])
tensor([1., 3.])

Tensor()

这是python类,是默认张量类型torch.FloatTensor()的别名,我们每次调用torch.Tensor([1,2, 3, 4, 5])来构造一个tensor的时候,会调用Tensor类的构造函数,生成一个单精度浮点类型的张量。也就是说,torch.Tensor() 的作用实际上跟 torch.FloatTensor() 一样,都是生成一个数据类型为 32 位浮点数的张量,如果没传入数据就返回空张量,如果有列表或者 narray 的返回其对应张量。但无论传入数据本身的数据类型是什么,返回的都是 32 位浮点数的张量。
示例代码:

import torch
print(torch.Tensor(3))
print(torch.Tensor(3,2))
print(torch.Tensor([3,2]))

输出结果:

tensor([0., 0., 0.])
tensor([[3.1992e-12, 1.4583e-19],
        [1.0899e+27, 6.8943e+34],
        [1.1835e+22, 7.0976e+22]])
tensor([3., 2.])

torch.tensor()与torch.Tensor()表面上只是大小写的区别,但他们是不一样的两个方法,Tensor()是调用Tensor类的构造函数,而tensor()只是一个最普通的方法,下面来分析一下他们的异同:

相同点

都会返回一个Tensor类型的数据

不同点

  1. Tensor()方法将数据转为tensor类型时会默认将数据转为float类型,而tensor()方法会保留原数据的数据类型;
  2. Tensor()方法除了将给定的data数据转变为tensor类型外还可生成指定维度大小的tensor数据,数据内容随机,而tensor()方法只能将给定的data数据转变为tensor类型
  3. Tensor()是 Tensor类的__init__()方法,而tensor()是一个普通的方法
    示例代码:
  4. Tensor()不能指定张量的数据类型
import torch
print(torch.Tensor(3,2))
print(torch.Tensor([3,2]))
print(torch.tensor([3,2]))

输出结果

tensor([[1.1632e+33, 3.2598e-12],
        [7.4086e+28, 7.1463e+22],
        [4.6241e+30, 1.0552e+24]])
tensor([3., 2.])
tensor([3, 2])
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值