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

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

同学你好!本文章于2021年末编写,获得广泛的好评!


故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现,


Pytorch深度学习·理论篇(2023版)目录地址为:


CSDN独家 | 全网首发 | Pytorch深度学习·理论篇(2023版)目录


本专栏将通过系统的深度学习实例,从可解释性的角度对深度学习的原理进行讲解与分析,通过将深度学习知识与Pytorch的高效结合,帮助各位新入门的读者理解深度学习各个模板之间的关系,这些均是在Pytorch上实现的,可以有效的结合当前各位研究生的研究方向,设计人工智能的各个领域,是经过一年时间打磨的精品专栏!

https://v9999.blog.csdn.net/article/details/127587345


欢迎大家订阅(2023版)理论篇

以下为2021版原文~~~~


23d4665fa5824275aec1f76fb4a2fafb.png


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], dtype=torch.int32)


结果:


9bdf4a00139c49c68542954732d21bd0.png


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.])


结果:


19f0e975d9b640b3a2aaa5c5867416a4.png


2.1.3 张量的类型判断与元素个数计算


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


结果:


82d5507e7d3749c4b4ca0fe01914de5e.png


2.1.4 张量的默认类型


在torch中CPU和GPU张量分别有8种数据类型


20201123195432170.png


在torch中默认的数据类型是32位浮点型(torch.FloatTensor),可以通过torch.set_default_tensor_type()函数设置默认的数据类型,但是该函数只支持设置浮点型数据类型,代码如下:


import torch
torch.tensor([1.2,3.4]).dtype #获取张量的数据类型,其中torch.tensor()函数生成一个张量
#默认为 torch.float32
torch.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.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 np
a = 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,并输出


结果:


98cd4b73d10045a7a566c25bbda127d5.png


2.2.2 张量与numpy类型变量的形状


import torch
import numpy as np
x = torch.rand(2,1)
print(x.shape,x.size())
anp = np.asarray([4,2])
print(anp.shape,anp.size)


结果:8ab59cdef23049d8bd6b0aeb2a925062.png


2.2.3 切片操作


import torch
import numpy as np
x = torch.rand(2,1)
print(x[:])
anp = np.asarray([4,2])
print(anp[:])


结果:678d0fca25f04cae83d89637f9328db1.png


2.2.3 陷阱


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

目录
相关文章
|
2月前
|
机器学习/深度学习 算法 PyTorch
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
|
2月前
|
机器学习/深度学习 算法 PyTorch
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
129 0
|
6月前
|
机器学习/深度学习 PyTorch 算法框架/工具
基于Pytorch 在昇腾上实现GCN图神经网络
本文详细讲解了如何在昇腾平台上使用PyTorch实现图神经网络(GCN)对Cora数据集进行分类训练。内容涵盖GCN背景、模型特点、网络架构剖析及实战分析。GCN通过聚合邻居节点信息实现“卷积”操作,适用于非欧氏结构数据。文章以两层GCN模型为例,结合Cora数据集(2708篇科学出版物,1433个特征,7种类别),展示了从数据加载到模型训练的完整流程。实验在NPU上运行,设置200个epoch,最终测试准确率达0.8040,内存占用约167M。
基于Pytorch 在昇腾上实现GCN图神经网络
|
6月前
|
机器学习/深度学习 算法 PyTorch
Perforated Backpropagation:神经网络优化的创新技术及PyTorch使用指南
深度学习近年来在多个领域取得了显著进展,但其核心组件——人工神经元和反向传播算法自提出以来鲜有根本性突破。穿孔反向传播(Perforated Backpropagation)技术通过引入“树突”机制,模仿生物神经元的计算能力,实现了对传统神经元的增强。该技术利用基于协方差的损失函数训练树突节点,使其能够识别神经元分类中的异常模式,从而提升整体网络性能。实验表明,该方法不仅可提高模型精度(如BERT模型准确率提升3%-17%),还能实现高效模型压缩(参数减少44%而无性能损失)。这一革新为深度学习的基础构建模块带来了新的可能性,尤其适用于边缘设备和大规模模型优化场景。
301 16
Perforated Backpropagation:神经网络优化的创新技术及PyTorch使用指南
|
9月前
|
机器学习/深度学习 数据可视化 算法
PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络
神经常微分方程(Neural ODEs)是深度学习领域的创新模型,将神经网络的离散变换扩展为连续时间动力系统。本文基于Torchdyn库介绍Neural ODE的实现与训练方法,涵盖数据集构建、模型构建、基于PyTorch Lightning的训练及实验结果可视化等内容。Torchdyn支持多种数值求解算法和高级特性,适用于生成模型、时间序列分析等领域。
472 77
PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络
|
6月前
|
机器学习/深度学习 搜索推荐 PyTorch
基于昇腾用PyTorch实现CTR模型DIN(Deep interest Netwok)网络
本文详细讲解了如何在昇腾平台上使用PyTorch训练推荐系统中的经典模型DIN(Deep Interest Network)。主要内容包括:DIN网络的创新点与架构剖析、Activation Unit和Attention模块的实现、Amazon-book数据集的介绍与预处理、模型训练过程定义及性能评估。通过实战演示,利用Amazon-book数据集训练DIN模型,最终评估其点击率预测性能。文中还提供了代码示例,帮助读者更好地理解每个步骤的实现细节。
|
6月前
|
机器学习/深度学习 自然语言处理 PyTorch
基于Pytorch Gemotric在昇腾上实现GAT图神经网络
本实验基于昇腾平台,使用PyTorch实现图神经网络GAT(Graph Attention Networks)在Pubmed数据集上的分类任务。内容涵盖GAT网络的创新点分析、图注意力机制原理、多头注意力机制详解以及模型代码实战。实验通过两层GAT网络对Pubmed数据集进行训练,验证模型性能,并展示NPU上的内存使用情况。最终,模型在测试集上达到约36.60%的准确率。
|
6月前
|
算法 PyTorch 算法框架/工具
PyTorch 实现FCN网络用于图像语义分割
本文详细讲解了在昇腾平台上使用PyTorch实现FCN(Fully Convolutional Networks)网络在VOC2012数据集上的训练过程。内容涵盖FCN的创新点分析、网络架构解析、代码实现以及端到端训练流程。重点包括全卷积结构替换全连接层、多尺度特征融合、跳跃连接和反卷积操作等技术细节。通过定义VOCSegDataset类处理数据集,构建FCN8s模型并完成训练与测试。实验结果展示了模型在图像分割任务中的应用效果,同时提供了内存使用优化的参考。
|
6月前
|
机器学习/深度学习 算法 PyTorch
基于Pytorch Gemotric在昇腾上实现GraphSage图神经网络
本实验基于PyTorch Geometric,在昇腾平台上实现GraphSAGE图神经网络,使用CiteSeer数据集进行分类训练。内容涵盖GraphSAGE的创新点、算法原理、网络架构及实战分析。GraphSAGE通过采样和聚合节点邻居特征,支持归纳式学习,适用于未见节点的表征生成。实验包括模型搭建、训练与验证,并在NPU上运行,最终测试准确率达0.665。
|
11月前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
259 17

推荐镜像

更多