综合网站系统,电脑怎么做软件开发,深圳网站设计 建设首选深圳市,网站 app同学你好#xff01;本文章于2021年末编写#xff0c;获得广泛的好评#xff01;
故在2022年末对本系列进行填充与更新#xff0c;欢迎大家订阅最新的专栏#xff0c;获取基于Pytorch1.10版本的理论代码(2023版)实现#xff0c;
Pytorch深度学习理论篇(2023版)目录地址…
同学你好本文章于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) #定义一个张量 5
print(a) #输出 tensor(5)anp np.asarray([4]) #定义一个Numpy数组
a torch.tensor(anp) #将Numpy数组转化成张量
print(a)# 输出 tensor([4], dtypetorch.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.5370e18, 1.0872e-18])b torch.Tensor(1,2) #定义指定形状的未初始化的张量
print(b) #输出 tensor([[-1.5312e18, 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.float322.1.6 dtype和type()的区别
torch_tensor.dtype #返回类似 torch.float64是torch定义的数据类型。
torch_tensor.type() #返回类似torch.cuda.DoubleTensor 是字符串且可以看到是CPU张量还是GPU张量。torch.float64 对应 torch.DoubleTensor
torch.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 torch
import 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 torch
import 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 torch
import 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不会重新开辟区域。