torch.cuda.FloatTensor 与 torch.FloatTensor(torch.Tensor)--CPU和GPU上的数据类型

本文探讨了PyTorch中torch.FloatTensor与torch.cuda.FloatTensor的区别,以及torch.Tensor与torch.tensor的使用和底层操作。重点介绍了如何在CPU与GPU间转换数据类型,并提到了torch.tensor的灵活数据拷贝功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.torch.cuda.FloatTensor 与 torch.FloatTensor

Pytorch中的tensor又包括CPU上的数据类型和GPU上的数据类型,一般GPU上的Tensor是CPU上的Tensor加cuda()函数得到

一般系统默认是torch.FloatTensor类型(即CPU上的数据类型)。例如data = torch.Tensor(2,3)是一个2*3的张量,类型为FloatTensor;

data.cuda()就转换为GPU的张量类型,torch.cuda.FloatTensor类型。

2.torch.Tensor与torch.tensor

torch.Tensor:torch.Tensor()是Python类,更明确的说,是默认张量类型torch.FloatTensor()的别名,torch.Tensor([1,2]) 会调用Tensor类的构造函数__init__,生成单精度浮点类型的张量。

torch.tensor():torch.tensor()仅仅是Python的函数,函数原型是:

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

中data可以是:list, tuple, array, scalar等类型。
torch.tensor()可以从data中的数据部分做拷贝(而不是直接引用),根据原始数据类型生成相应的torch.LongTensor,torch.FloatTensor,torch.DoubleTensor。

torch.cuda.FloatTensor - 小娜子成长记 - 博客园

### FloatTensorCuda.FloatTensor的区别及用法 在PyTorch中,`torch.FloatTensor` `torch.cuda.FloatTensor` 是两种不同类型的张量,主要区别在于它们所处的设备环境以及性能特点。 #### 设备差异 - **CPU上的FloatTensor**: 默认情况下创建的浮点数张量位于主机内存(即CPU),适合用于数据预处理或其他不需要GPU加速的任务。可以使用如下方式创建: ```python import torch cpu_tensor = torch.FloatTensor([1.0, 2.0, 3.0]) ``` - **GPU上的Cuda.FloatTensor**: 当有可用的CUDA GPU时,可以通过指定`.cuda()`方法将张量移动到GPU上执行计算,从而显著提高运算速度特别是对于大规模矩阵操作而言。创建并放置于GPU中的张量形式如下所示: ```python gpu_tensor = torch.cuda.FloatTensor([1.0, 2.0, 3.0]) # 如果当前默认设备为GPU,则可以直接这样初始化 或者更常见的方式是从已有的tensor转换而来: tensor_on_gpu = some_cpu_tensor.cuda() ``` #### 性能考量 由于现代图形处理器(GPU)专为并行化任务设计,在处理大量线性代数问题方面表现出色;因此当涉及到复杂的模型训练过程时推荐尽可能利用GPU资源来提升效率[^1]。 #### 实际应用案例 假设有一个简单的加法运算场景: ```python import torch # 创建两个float类型的向量 vector_a = torch.FloatTensor([1., 2., 3.]) vector_b = torch.FloatTensor([4., 5., 6.]) result_vector = vector_a + vector_b # 此处会在CPU端完成相加操作 if torch.cuda.is_available(): device = 'cuda' else: device = 'cpu' # 将上述变量转移到合适的device上去做相同的操作 gpu_vector_a = vector_a.to(device) gpu_vector_b = vector_b.to(device) gpu_result_vector = gpu_vector_a + gpu_vector_b # 若是在GPU环境下则会在此处调用高效的内核函数来进行计算 ``` 通过这种方式可以根据实际硬件条件灵活调整程序运行的位置以达到最佳性能表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pengsen Ma

太谢谢了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值