Pytorch基础教程(张量数据类型、创建Tensor、索引与切片、维度变换)

本文介绍了PyTorch的基础知识,包括数据类型如ByteTensor、FloatTensor及其在GPU上的使用,张量的创建、索引与切片、维度变换等。内容涵盖张量的数据类型检查、创建方法,如从numpy导入、使用list创建,以及张量的索引选择,如切片、随机采样。此外,还详细讲解了张量的view、reshape、squeeze、unsqueeze、expand和repeat等变换操作。

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

pytorch基础教程

一、 pytorch的数据类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

torch.ByteTensor是判断两个张量是否相等;用GPU需要在前面加一个cuda.

如何检验tensor的数据类型,有三种方法

a.type();

type(a);

isinstance(a,torch.FloatTenssor)

import torch
a=torch.randn(2,3)
a.type()
'torch.FloatTensor'
type(a)
torch.Tensor
isinstance(a,torch.FloatTensor)
True
isinstance(a,torch.cuda.DoubleTensor)
False
a=a.cuda()

x.cuda()会返回一个GPU的引用。

标量是一个dimension为0的标量,用来计算loss

torch.tensor(1.)
tensor(1.)
torch.tensor(1.3)
tensor(1.3000)
a=torch.tensor(2.2)
a.shape
torch.Size([])
len(a.shape)
0
a.size()
torch.Size([])

维度为1的向量

.tensor接受的是数据的类型,给的参数是具体数值

.FloatTensor接受的是数据的shape,用randn进行初始化

Bias、Linear Input是常用维度为1的向量

torch.tensor([1.1])
tensor([1.1000])
torch.tensor([1.1,2.2])
tensor([1.1000, 2.2000])
torch.FloatTensor(1)
tensor([0.])
torch.FloatTensor(2)
tensor([0., 0.])
import numpy as np
data=np.ones(2)
data
array([1., 1.])
torch.from_numpy(data)
tensor([1., 1.], dtype=torch.float64)

tensor是指具体的函数,size/shape是tensor具体的形状,dim指的是shape/size的长度

a=torch.ones(2)
a.shape
torch.Size([2])
a=torch.randn(2,3)
a
tensor([[-0.7331,  0.3339, -0.2119],
        [ 0.1345, -0.2491, -0.2905]])
a.shape
torch.Size([2, 3])
a= torch.randn(2,3)
a
tensor([[-1.0374,  0.9552,  0.5768],
        [-0.3273,  0.1635, -1.2467]])
a.shape
torch.Size([2, 3])
a.size(0)
2

a.size(0)返回的是shape的第一个维度,即2

a.size(1)
3

a.size(1)返回的是shape的第二个维度,即3

a.shape[0]
2
a.shape[1]
3

shape也可以做索引,因为shape本身就是list

常用于Linear Input batch,比如[4,784],输入4张照片。每张照片784个维度

a=torch.rand(1,2,3)
a
tensor([[[0.5793, 0.2849, 0.4267],
         [0.1912, 0.2691, 0.8100]]])
a.shape
torch.Size([1, 2, 3])
a[0]
tensor([[0.5793, 0.2849, 0.4267],
        [0.1912, 0.2691, 0.8100]])

取第一个维度的第0个元素

可以把shape转换成list

list(a.shape)
[1, 2, 3]

三维的张量常用来做文字处理,输入RNN Input Batch.例:[10,20,100],10是word,20是sentence ,100是feature

四维的适合图片类型,例如CNN:[b,c,h,w],[2,3,28,28],2是图片个数,3是通道数,28,28分别是图片的长和宽

import torch
a=torch.rand(2,3,28,28)

a.shape
torch.Size([2, 3, 28, 28])

numel指的是tensor占用内存的数量,numel()返回的是元素的个数

a.numel()
4704
a.dim()
4

二、创建tensor

第一种方法,从numpy中导入

a=np.array([2,3.3])
torch.from_numpy(a)
tensor([2.0000, 3.3000], dtype=torch.float64)

注:从numpy导入的是Float其实是double类型的数据

a=np.ones([2,3])
torch.from_numpy(a)
tensor([[1., 1., 1.],
        [1., 1., 1.]], dtype=torch.float64)

第二种方法用list导入

.tensor承载的是具体的数据,Tensor或者FloatTensor是接受一个shape做为参数,也可以接受数据,但是数据必须用一个list来表示。
建议用tensor给出具体的数据,Tensor接受shap

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值