【pyTorch基础】(1) 张量的数据类型

最近想学一下图卷积GCN,教程竟然都是pyTorch的,作为一名重度TensorFlow用户太崩溃了,没办法只能学一波pyTorch了。

首先在pyTorch中,一个张量(tensor)可能会被部署在CPU上,也可能被部署在GPU上。它们的数据类型是不同的。即使是同一个数据,被部署在不同位置,那么它的数据类型也是不一样的。数据类型如下:

import torch
'''
# pyTorch的数据类型
# -------------------------------------- #
#(1)CUP上的数据类型
# torch.FloatTensor       (float32)
# torch.DoubleTensor      (float64)
# torch.ByteTensor        (float16)
# torch.CharTensor        (uint8)
# torch.ShortTensor       (int8)
# torch.InitTensor        (int16)
# torch.LongTensor        (int64)
# -------------------------------------- #
#(2)GUP上的数据类型
# torch.cuda.FloatTensor       (float32)
# torch.cuda.DoubleTensor      (float64)
# torch.cuda.ByteTensor        (float16)
# torch.cuda.CharTensor        (uint8)
# torch.cuda.ShortTensor       (int8)
# torch.cuda.InitTensor        (int16)
# torch.cuda.LongTensor        (int64)
# -------------------------------------- #
'''

1. 查看数据类型

查看张量数据类型: tensor.type()

PyTorch中,处理张量数据的方法丰富多样,涵盖了创建、运算、索引、转换等多个方面: ### 创建张量 可以使用不同的函数来创建张量,包括从Python列表、NumPy数组创建,或者创建特定类型的张量,如全零、全一、随机值张量等。 ```python import torch import numpy as np # 从Python列表创建张量 tensor_from_list = torch.tensor([1, 2, 3]) # 从NumPy数组创建张量 numpy_array = np.array([4, 5, 6]) tensor_from_numpy = torch.from_numpy(numpy_array) # 创建全零张量 zeros_tensor = torch.zeros(2, 3) # 创建全一张量 ones_tensor = torch.ones(2, 3) # 创建随机值张量 random_tensor = torch.rand(2, 3) ``` ### 张量运算 PyTorch中的张量有超过一百种运算,包括算术、线性代数、矩阵操作等[^1]。 ```python # 算术运算 x = torch.tensor([1, 2, 3]) y = torch.tensor([4, 5, 6]) add_result = x + y sub_result = x - y mul_result = x * y div_result = x / y # 矩阵乘法 a = torch.rand(2, 3) b = torch.rand(3, 4) matmul_result = torch.matmul(a, b) ``` ### 索引和切片操作 和Python列表、NumPy数组类似,PyTorch张量支持索引和切片操作,方便提取部分数据,同时支持视图操作,视图张量与其基本张量共享相同的基础数据和内存,修改视图张量也会更改基本张量,避免了显式的数据复制,允许进行快速高效的内存重塑、切片和元素操作[^2]。 ```python tensor = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 索引操作 element = tensor[0, 1] # 切片操作 slice_tensor = tensor[0:2, 1:3] ``` ### 张量的转换 可以进行不同数据类型间的转换,以及在CPU和GPU之间转换张量。 ```python # 数据类型转换 float_tensor = tensor.float() int_tensor = tensor.int() # CPU和GPU之间转换 if torch.cuda.is_available(): gpu_tensor = tensor.cuda() cpu_tensor = gpu_tensor.cpu() ``` ### 处理不同类型的数据 在处理不同类型的数据时,需要注意维度布局。处理图像数据的PyTorch模块要求张量排列为C * H * W(通道,高度,宽度);体数据(三维图像)是5维张量,形状为N * C * D * H * W(批次,通道,深度,高度,宽度);处理时间序列数据时,可将平面二维数据集转化为三维数据集,按时间段调整数据等[^3]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

立Sir

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值