Pytorch学习01——Tensor介绍与创建

1、张量

1.1 pytorch和python的对比

  • python:int、float、tuple(元组)、string
  • pytorch:以tensor结尾,不同类型的tensor的维度不同
    例如:整型数字tensor维度为0,二维数组tensor的维度为2维

1.2 pytorch特殊地方

  • pytorch不支持string,可以用one-hot编码表示字符

  • 常见类型:float32对应pytorch:torch.FloatTensor
    int32对应pytorch:torch.IntTensor
    uint8对应pytorch:torch.ByteTensor(常用于判断两者是否相等)

1.3 基础语法

isinstance(a, b):如果a是类型b,则输出True


=====零维
torch.tensor(num):可以直接生成一个标量,标量维度为0

dimension:维度
a.dim() = len(a.shape):得到维度
a.shape和a.size()都可以得到torch.size([])
torch.size([x,y,z]):括号里有几个数字代表几维,数字大小为包含下层张量个数。
					以此为例,即有三维,三维里有x个二维,每个二维包含y个一维,每个一维包含z个数
a.type():得到的就是数据类型,即inttensor、floattensor那些


=====一维张量
torch.tensor([1.1, 2.2]):直接定义
torch.FLoatTensor(2):生成一个长度为2,维度为1的
一维张量(向量)用途:bias、linear input(将一张图片展成一维的)	
					比如一张图片28*28展成784输入


=====二维张量
torch.randn(2,3):生成正态分布(01)的23列矩阵
用途:linear input batch
	  比如图片输入(4784),4张图片输入,每张为784


=====三维张量
torch.rand(1,2,3):生成均匀分布(0~1)的三维矩阵
list(x):若x为torch.size([1,2,3]),可以直接转换为[1,2,3]
a.numel():元素个数。上面为例:1*2*3=6
用途:RNN input batch	
	[words,sentences,features]:输入几个句子,每个句子几个单词,每个单词用多少特征表示


=====四维张量
用途:CNN[b,c,h,w]四维刚好对应batch、channel、height、width

2、创建Tensor

2.1 tensor与Tensor

  • tensor接收现有数据
  • Tensor或FloatTensor接收数据维度
    或者用于接收数据时,需将数据[ ]

2.2 tensor的创建

=====import from list
例如:torch.tensor([2, 3.2])

=====import from numpy
例如:a = np.array([2, 3.3])
	 torch.from_numpy(a)

2.3 初始化tensor

=====未初始化:里面含有的是杂乱的数据,需要接着初始化。
		  否则容易出现问题:torch.nan, torch.inf
生成一维
torch.empty(1)
生成23列
torch.Tensor(2,3)
torch.IntTensor(2,3)
torch.FloatTensor(2,3)



=====随机初始化
rand/ rand_like/ randint
rand:生成数据符合[0,1]的均值分布
rand_like(a):生成shape同a
randint(min,max,[]):生成shape为[],数据min(可取),max(不可取)

randn:生成数据符合N(0,1)
例如:randn(3,3)
改变均值和方差:torch.normal(mean=torch.full([10],0),std=torch.arange(1,0,-0.1))
生成10个均值为0,标准差逐渐减小从10.1,然后可以reshape到想要的shape



=====指定初始化
full
torch.full([2,3],7)23列,7
torch.full([],7):标量7
torch.full([2],7):维度为1,长度为2的张量,元素值都是7

arange
torch.arange(0,10,2):010,步长为2.包括0但不包括10

linspace/logspace
torch.linspace(0,10,steps=4):010,取平均切割的四个数。包括010
	===>tensor([0.0000, 3.3333, 6.6667, 10.0000])
torch.logspace(0,-1,steps=10):0-1,取10个数(包括010),然后将其当作10的幂。(10作为base参数可以设置)
	===>tensor([1.0000, 0.7743, ···, 0.1000])

ones/zeros/eye
torch.ones(3,3):生成33列,元素值为1的矩阵
torch.ones_like(a):形状如a,元素值为1
torch.zeros(3,3):生成33列,元素值为0的矩阵
torch.eye(3,4):单位阵。如果不是方阵,针对此处
				[[1., 0., 0., 0.],
				[0., 1., 0., 0.],
				[0., 0., 1., 0.]]

randperm
randperm(10):随机打散,生成0-910个索引
			目的是为了在打散的同时能够保持原来对应的打散后仍然对应
例如:a = torch.rand(2,3)
	  b = torch.rand(2,2)
	  利用idx=torch.randperm(2)可以生成[0, 1][1, 0]
	  那么需要保持a[idx]和b[idx]同时使用
	  假设原来a的第一行对应b的第一行
	  [0,1]代表保持原来顺序不动
	  [1,0]代表a的原来第一行换到第二行,那么b原来的第一行也要换到第二行

2.4 默认类型

使用tensor和Tensor生成时,数据类型为默认tensor类型FloatTensor
可以修改:torch.set_default_tensor_type(torch.DoubleTensor)
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyTorch中,模仿学习是指通过观察和模仿来学习任务。这种学习方法常用于强化学习中,其中智能体通过观察其他智能体的行为并模仿其行为来学习如何执行特定的任务。 PyTorch提供了丰富的张量类型用于存储和操作数据。根据引用,PyTorch支持多种数据类型,包括torch.float32、torch.float64、torch.float16、torch.uint8、torch.int8、torch.int16、torch.int32和torch.int64。这些数据类型具有不同的精度和表示范围,可以根据具体任务的需求选择适当的数据类型。 在PyTorch中,有两种常用的创建张量的方法,即使用torch.Tensor()和torch.tensor()。根据引用和引用,torch.Tensor()是一个类,而torch.tensor()是一个函数。torch.Tensor()会将数组转换为默认的tensor类型,而torch.tensor()可以根据传入的数据自动推断出tensor的类型。 要进行模仿学习,可以使用torch.tensor()创建张量来存储观察到的行为数据,并使用torch.Tensor()创建张量来存储模仿学习的结果。根据具体的任务和数据类型需求,选择适当的数据类型和创建方法来实现模仿学习。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [OUC暑期培训(深度学习)——第一周学习记录:深度学习pytorch基础](https://blog.csdn.net/tm_operao/article/details/125758097)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值