当前位置:首页 >> 编程语言 >> 【Pytorch神经网络理论篇】 01 Pytorch快速上手(一)概述+张量,haswell 笔记本

【Pytorch神经网络理论篇】 01 Pytorch快速上手(一)概述+张量,haswell 笔记本

0evadmin 编程语言 1
文件名:【Pytorch神经网络理论篇】 01 Pytorch快速上手(一)概述+张量,haswell 笔记本 【Pytorch神经网络理论篇】 01 Pytorch快速上手(一)概述+张量

 

同学你好!本文章于2021年末编写,获得广泛的好评! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深度学习·理论篇(2023版)目录地址为:

CSDN独家 | 全网首发 | Pytorch深度学习·理论篇(2023版)目录本专栏将通过系统的深度学习实例,从可解释性的角度对深度学习的原理进行讲解与分析,通过将深度学习知识与Pytorch的高效结合,帮助各位新入门的读者理解深度学习各个模板之间的关系,这些均是在Pytorch上实现的,可以有效的结合当前各位研究生的研究方向,设计人工智能的各个领域,是经过一年时间打磨的精品专栏!https://v9999.blog.csdn.net/article/details/127587345欢迎大家订阅(2023版)理论篇

以下为2021版原文~~~~

1 概述

Pytorch是基于Torch之上的python包,在底层主要通过张量的形式进行计算,Pytorch中的张量表示为同一数据类型的多位橘子。

1.1 基础数据类型的概述

1、标量:即具体的数字

2、向量:多个标量组成

3、矩阵:多个向量组成

4、张量:多个矩阵组成的量

2 张量 2.1 张量在编程语言上的定义方法 2.1.1 torch.tensor() import torch # 引入torch库import numpy as np # 引入Numpy"""torch.tensor():仅有一个参数,其功能是将转入的对象转化为张量"""a = torch.tensor(5) #定义一个张量 5print(a) #输出 tensor(5)anp = np.asarray([4]) #定义一个Numpy数组a = torch.tensor(anp) #将Numpy数组转化成张量print(a)# 输出 tensor([4], dtype=torch.int32)

结果:

2.1.2 torch.Tensor() import torch # 引入torch库import numpy as np # 引入Numpy"""torch.Tensor():1.当传入数字时,创建一个指定形状的张量,生成的张量是未初始化的。2.传入一个列表时,生成与该列表内容相同的张量"""a = torch.Tensor(2) #定义指定形状未初始化的张量print(a) #输出 tensor([-1.5370e+18, 1.0872e-18])b = torch.Tensor(1,2) #定义指定形状的未初始化的张量print(b) #输出 tensor([[-1.5312e+18, 2.7181e-19]])e = torch.rand(2,1) #定义指定形状的已初始化的张量print(e) #随机生成0至1区间内的张量c = torch.Tensor([2]) #定义指定内容的张量print(c) #输出 tensor([2.])d = torch.Tensor([1,2]) #定义一个指定内容的张量print(d) #输出 tensor([1., 2.])

结果:

2.1.3 张量的类型判断与元素个数计算 import torch # 引入torch库a = torch.Tensor(2) # 定义一个指定形状的张量print(torch.is_tensor(a)) # 判断a是否为张量print(torch.numel(a)) # 获得a中的元素个数

结果:

2.1.4 张量的默认类型

在torch中CPU和GPU张量分别有8种数据类型 在torch中默认的数据类型是32位浮点型(torch.FloatTensor),可以通过torch.set_default_tensor_type()函数设置默认的数据类型,但是该函数只支持设置浮点型数据类型,代码如下:

import torchtorch.tensor([1.2,3.4]).dtype #获取张量的数据类型,其中torch.tensor()函数生成一个张量#默认为 torch.float32torch.set_default_tensor_type(torch.DoubleTensor) #设置张量的默认数据类型torch.tensor([1.2,3.4]).dtype#此时变成 torch.float64 2.1.5 张量的type()方法==》将张量转化为基础数据类型

在torch中还有其他类型的数据,将浮点型转化为其他数据类型的方法如下:

a = torch.tensor([1.2,3.4])print("a.dtype:",a.dtype)print("a.long()方法",a.long().dtype)print("a.int()方法",a.int().dtype)print("a.float()方法",a.float().dtype)##a.dtype:torch.float64#a.long()方法:torch.int64#a.int()方法:torch.int32#a.float()方法:torch.float32 2.1.6 dtype和type()的区别 torch_tensor.dtype #返回类似: torch.float64,是torch定义的数据类型。torch_tensor.type() #返回类似:torch.cuda.DoubleTensor ,是字符串,且可以看到是CPU张量还是GPU张量。torch.float64 对应 torch.DoubleTensortorch.float32 对应 torch.FloatTensor 2.1.7 默认类型在其他函数中的应用

torch.ones():生成指定形状、元素值为1的张量数组

torch.zeros():生成指定形状、元素值为0的张量数组

torch.ones_like():生成与目标张量形状相同、元素值为1的张量数组

torch.zeros_like():生成与目标张量形状相同、元素值为1的张量数组

torch.randn():生成指定形状的随机数张量数组

torch.eye():生成对角矩阵的张量

torch.full():生成元素值均为1的矩阵的张量

2.2 张量与Numpy的关系

在pytorch中张量可以是一个标量,一个向量,一个矩阵,甚至是更高维度的数组,所以pytorch中的rtensor和numpy中的数组(ndarray)非常相似。

在使用中也经常将pytorch中的张量和numpy库中的数组相互转化,在深度网络中,基于pytorch的相关计算都是在tensor的基础上完成的。

2.2.1 类型转换 import torchimport numpy as npa = torch.FloatTensor([4]) # 定义一个张量print(a.numpy()) # 转化成numpy,并输出anp = np.asarray([4]) # 定义一个numpy类型对象print(torch.from_numpy(anp)) # 法1 转化为tensor,并输出print(torch.tensor(anp))# 法2 转化为tensor,并输出

结果:

 

 2.2.2 张量与numpy类型变量的形状 import torchimport numpy as npx = torch.rand(2,1)print(x.shape,x.size())anp = np.asarray([4,2])print(anp.shape,anp.size)

结果:

2.2.3 切片操作 import torchimport numpy as npx = torch.rand(2,1)print(x[:])anp = np.asarray([4,2])print(anp[:])

 结果:

 2.2.3 陷阱

Numpy转化为tensor张量时,若改变tensor的数值,不会影响到原numpy的数值,因为tensor会重新开辟区域。若改变numpy的数值,会影响到tensor的数值,因为numpy不会重新开辟区域。

协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接