深度学习入门-08

news2024/12/25 14:37:17

基于小土堆学习

神经网络的搭建

神经网络pytorch官方文档:
pytorch官方说明文档

torch.nn是pytorch存放神经网络的工具箱

在这里插入图片描述

  1. Containers
    Containers(容器)在神经网络中通常不是一个特指的技术术语,但在编程和数据处理中,容器可以泛指用于存储和管理数据的结构,如列表、字典、数组等。在神经网络的上下文中,可能指的是封装了多个网络层的结构,如PyTorch中的nn.Module,它作为一个基类,用于构建所有神经网络模块。这些模块可以被视为包含(或封装)了网络层的容器。更好的叫法是骨架,也就是神经网络的骨架,后续填充不同内容既可以组成神经网络。

  2. Convolution Layers(卷积层)
    卷积层是卷积神经网络(CNN)的核心组成部分,主要用于特征提取。它通过卷积核在输入图像上滑动,进行局部区域的加权求和操作,从而提取图像的空间层次特征。卷积层的关键参数包括卷积核大小、步长(stride)、填充(padding)等。

  3. Pooling Layers(池化层)
    池化层也称为取样层,通常紧跟在卷积层之后,用于降低特征图的维度(即高度和宽度),同时保留重要的特征信息。池化操作有助于减少计算量,控制过拟合,并引入平移不变性。常见的池化方法包括最大池化(Max Pooling)和平均池化(Average Pooling)。

  4. Padding Layers(填充层)
    填充层主要用于在输入特征图的边界周围添加额外的像素值(通常是0或边界值的复制),以调整输入特征图的尺寸,从而控制卷积层或池化层的输出尺寸。填充可以增加特征图的尺寸(当填充值大于0时),也可以保持特征图的尺寸不变(通过适当的填充和步长设置)。

  5. Non-linear Activations(非线性激活)
    非线性激活函数是神经网络中引入非线性的关键,使得神经网络能够逼近复杂的非线性函数。常见的非线性激活函数包括ReLU(Rectified Linear Unit)、Sigmoid、Tanh等。这些函数作用于神经元的输出,增加网络的非线性表达能力。

  6. Normalization Layers(归一化层)
    归一化层用于对输入特征进行归一化处理,以加速网络训练过程并提高模型的泛化能力。常见的归一化方法包括BatchNorm(批量归一化)、LayerNorm(层归一化)、InstanceNorm(实例归一化)和GroupNorm(组归一化)等。这些方法通过调整特征的均值和方差,使得不同批次或不同样本之间的特征分布更加一致。

其他层或概念简述:
Recurrent Layers(循环层):如LSTM(长短期记忆网络)和GRU(门控循环单元),用于处理序列数据。
Transformer Layers:基于自注意力机制的层,广泛应用于自然语言处理任务。
Linear Layers(线性层):全连接层,用于将输入特征映射到输出空间。
Dropout Layers(丢弃层):在训练过程中随机丢弃一部分神经元,以防止过拟合。
Sparse Layers(稀疏层):设计用于处理稀疏输入数据的层。
Distance Functions(距离函数):用于计算样本间距离的函数,如欧氏距离、余弦相似度等。
Loss Functions(损失函数):用于评估模型预测值与真实值之间差异的函数,指导模型训练过程。
Vision Layers:专门用于视觉任务的层,如目标检测、分割等。
Shuffle Layers:可能指的是打乱数据顺序的层,但在标准神经网络层中不常见。
DataParallel Layers(多GPU分布式层):用于在多个GPU上并行处理数据的层,提高计算效率。
Utilities:工具类层,提供辅助功能,如数据预处理、后处理等。
Quantized Functions(量化函数):用于对模型参数或激活值进行量化的函数,以减小模型大小并提高推理速度。
Lazy Modules Initialization:懒加载模块初始化,即在需要时才初始化模块参数,以减少内存占用。

1. Containers
在神经网络框架中,如PyTorch,Containers 和 Module 是构建和管理神经网络的基础。以下是您提到的各个组件的详细解释:

  1. Module

Module 是所有神经网络模块的基类。在 PyTorch 中,torch.nn.Module 是构建神经网络的基石。它提供了很多基础功能,比如参数的注册、模块的嵌套、以及前向和后向传播的实现等。为神经网络提供基础的骨架。

  1. Sequential

Sequential 是一个顺序容器,用于按顺序包含多个子模块。在 PyTorch 中,torch.nn.Sequential 使得模型的构建变得非常简单,你只需要将各个层按顺序作为参数传递给 Sequential 即可。

  1. ModuleList
    ModuleList 是一个存储子模块的列表。与普通的 Python 列表不同,ModuleList 中的模块会被正确地注册,并且所有的参数也会被包含到整个模块的参数列表中。这使得 ModuleList 成为管理子模块列表的理想选择。

  2. ModuleDict
    ModuleDict 是一个存储子模块的字典。与普通的 Python 字典类似,但 ModuleDict 中的模块也会被正确地注册,并且所有的参数也会被包含到整个模块的参数列表中。这使得 ModuleDict 成为管理子模块字典的理想选择。

  3. ParameterList
    ParameterList 是一个存储参数的列表。与普通的 Python 列表不同,ParameterList 中的参数会被正确地注册,并且可以被整个模块识别和管理。这使得 ParameterList 成为管理参数列表的理想选择。

  4. ParameterDict
    ParameterDict 是一个存储参数的字典。与普通的 Python 字典类似,但 ParameterDict 中的参数也会被正确地注册,并且可以被整个模块识别和管理。这使得 ParameterDict 成为管理参数字典的理想选择。

总的来说,这些容器和模块类为构建和管理复杂的神经网络提供了强大的工具。通过组合使用这些组件,你可以轻松地构建出各种复杂度的神经网络模型。

import torch.nn as nn
import torch.nn.functional as F

class Model(nn.Module):#定义自己神经网络的名字
    def __init__(self):#初始化
        super().__init__()#模板调用初始化函数,是必须的
        self.conv1 = nn.Conv2d(1, 20, 5)#自己定义
        self.conv2 = nn.Conv2d(20, 20, 5)

    def forward(self, x):
    #输入是x,x会首先进行conv1(x)也就是卷积,再次经过非线性处理F.relu(self.conv2(x))
        x = F.relu(self.conv1(x))
        return F.relu(self.conv2(x))

输入送到神经网络中,神经网络会给一个输出,然后神经网络的运算步骤就是 forward。下图就是一个前向传播的例子。
在这里插入图片描述

在 PyTorch 中,forward(*input) 方法定义了每次调用模块时执行的计算。这是构建神经网络时最关键的方法之一,因为它定义了数据如何通过网络层进行前向传播。
forward 方法应该被所有子类重写,以定义特定的计算逻辑。例如,在一个简单的线性层(nn.Linear)中,forward 方法会定义输入数据如何与权重矩阵相乘并加上偏置。
重要的是要注意,虽然你需要在 forward 方法中定义前向传播的逻辑,但在实际使用中,你应该直接调用模块实例而不是 forward 方法本身。这是因为直接调用模块实例会触发所有注册的钩子(hooks),这些钩子可以用于各种目的,比如修改输入或输出、记录梯度等。而直接调用 forward 方法则不会触发这些钩子。

import torch
from torch import nn


class Test(nn.Module):
    def __int__(self):
        super(Test,self).__int__()
    def forward(self,input):
        output = input + 1
        return output

test = Test()
x = torch.tensor(1.0)
output = test(x)
print(output)

结果如下:

C:\Anaconda3\envs\pytorch_test\python.exe H:\Python\Test\nn_model.py 
tensor(2.)

进程已结束,退出代码0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2078671.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

流体力学告诉你,如何最快地炫一瓶啤酒?

夏季的夜晚,是属于烧烤和啤酒的。三五好友聚会,总有人能在你面前快速且优雅地炫一瓶啤酒,成为桌上的明星。 浅浅研究一下,水从瓶子里流出的过程,慢放后发现,包含两步。第一步,水从瓶口流出&…

直流充电桩测试仪的步骤和规范

直流充电桩测试仪是一种用于检测和评估直流充电桩性能的设备。它可以对充电桩的输出电压、电流、功率等参数进行精确测量,以确保充电桩的正常工作和安全使用。以下是直流充电桩测试仪的步骤和规范: 1. 准备工作:首先,需要确保测试…

每年节约上亿元!法大大“音视频双录”助力深圳营商环境优化

8月26日,深圳经济特区迎来44周岁。深视新闻栏目推出系列报道,首篇便聚焦改革,并重点呈现了“音视频双录签名模式”如何帮助营商环境优化。 营商环境往往被视为一座城市的“金字招牌”,而经商兴业的第一步是注册企业:在…

ACL的原理

随着网络的飞速发展,网络安全和网络服务质量QoS (Quality of Service)问题日益突出。访问控制列表 (ACL, Access Control List)是与其紧密相关的一个技术。ACL可以通过对网络中报文流的精确识别,与其他技术结合,达到控制网络访问行为、防止网…

解构德赛西威“长期主义”战略

变则通,通则久,中国汽车行业的创新演变史,是对长期主义价值观的生动诠释。从燃油车到新能源汽车,从国外品牌技术引进,到国产自主品牌崛起,沿着这条行业发展曲线的起伏跌宕,德赛西威敏捷会意时代…

RPA自动化流程机器人在企业财务中的安全与合规性考虑

随着企业对数字化转型的需求不断增加,财务系统变得更加复杂和集成,而新技术的应用将改变企业财务管理传统的运营模式,帮助企业提质增效的同时也可能带来系统安全性的挑战。RPA自动化流程机器人作为最受企业欢迎的数字化转型工具之一&#xff…

CRMEB多商户2.2.1小程序授权问题

多商户2.2.1版本更新了小程序登录授权增加隐私协议,但是重新发布后有部分用户无法授权,具体表现为点击同意隐私协议以后,授权无反应,主要原因是因为腾讯更新了授权指引相关信息,这里给出的处理办法是在小程序后台增加获…

asp.net core在win上的发布和部署

一、asp.net core两种发布方式 1、两个发布方式——【框架依赖发布】和【独立发布】 2、两种发布方式的差别 二、发布的详细过程 1、【生成】->【发布】 2、框架依赖发布 设置发布参数,然后进行发布 发布好的文件,把它们放到一个新的目录文件夹里 …

R 语言学习教程,从入门到精通,R 绘图 散点图(25)

1、R 绘图 散点图 散点图是将所有的数据以点的形式展现在直角坐标系上,以显示变量之间的相互影响程度,点的位置由变量的数值决定,每个点对应一个 X 和 Y 轴点坐标。 散点图可以使用 plot() 函数来绘制,语法格式如下: …

数据库安全技术的重要性,避免成为SQL注入攻击的下一个目标

数据库里存储了大量个人信息,包括一些非常敏感的资料,让必须管理数据库的公司十分头痛。如今,运用各种高级工具和技术,数据库开发人员可以在保持信息私密的状态下放心执行各种操作。 这些解决方案靠的是数学的巧妙应用。其中一些…

一文彻底搞懂Fine-tuning - 超参数(Hyperparameter)

Hyperparameter 超参数(Hyperparameter), 是机器学习算法中的调优参数,用于控制模型的学习过程和结构。与模型参数(Model Parameter)不同,模型参数是在训练过程中通过数据学习得到的&#xff0…

网络安全面试经验分享:蘑菇街/网络安全

《网安面试指南》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484339&idx1&sn356300f169de74e7a778b04bfbbbd0ab&chksmc0e47aeff793f3f9a5f7abcfa57695e8944e52bca2de2c7a3eb1aecb3c1e6b9cb6abe509d51f&scene21#wechat_redirect 蘑菇街 介绍…

续:MySQL的并行复制

【示例】 如果数据复制的慢的话,就会导致主从数据不一致性; 有的企业需要数据保持强一致性;比如银行等; 日志回放默认是单线程; # mysql> show processlist; --------------------------------------------------…

裁剪视频哪个软件好用?试试这些省时省力工具

你是否曾为如何将一段长视频精准地分割成多个精彩片段而烦恼? 视频分割,作为视频剪辑中的基础且关键步骤,对于创作短视频、精选集锦或是捕捉那些稍纵即逝的动人瞬间至关重要。 别担心,今天我们就来揭秘3种免费的裁剪视频在线技巧…

创客匠人对话(下):拆解做爆款的底层逻辑

老蒋创客圈第64期对话标杆直播连麦,我们邀请到【iAMU蒙特梭利翻转星球】平台创始人申晓慧老师。在上篇文章中,申老师分享了她是如何做品牌,如何运营社群。 拿到结果的前提是有一个被客户认同的好产品。本篇文章我们将继续分享对话精彩内容&a…

通过IDEA创建spring boot的web项目

1.Fle->New->Project,选择Maven&#xff0c;点击Next 2.修改项目名称&#xff0c;点击Finish 3.项目创建完毕&#xff0c;等待Maven下载完成 4.修改pom.xml文件&#xff0c;改成如下内容 <?xml version"1.0" encoding"UTF-8"?> <pr…

Spark SQL Hints:优化查询性能的利器

前言 在大数据处理领域,Apache Spark 是一个非常流行的框架,它提供了高性能的数据处理能力。Spark SQL 是 Spark 中的一个模块,用于处理结构化和半结构化数据,允许用户使用 SQL 查询数据,同时也提供了 DataFrame 和 DataSet API 进行编程访问。为了帮助开发者更有效地优化…

ZBrush入门使用介绍——10、布尔运算

大家好&#xff0c;我是阿赵。   这次来看看在ZBrush里面怎样使用布尔运算。 一、 预览布尔渲染 要布尔运算&#xff0c;起码是需要2个模型&#xff0c;所以先创建一个立方体&#xff0c;非常注意的是&#xff0c;一定要转成多边形网格物体。 之前介绍过子工具的用法&#…

联合整体与蒙面人脸识别

Joint Holistic and Masked Face Recognition 摘要 本文通过补丁重建的代理任务来初始化模型参数&#xff0c;并观察到 ViT 主干网表现出改进的训练稳定性和令人满意的人脸识别性能。 除了训练稳定性之外&#xff0c;还提出了两种基于提示的策略&#xff0c;将整体和蒙面人脸识…

MIT APP Inventor服务器版编译

注&#xff1a;MIT Appinventor 在市场上的 Windows 版本较多&#xff0c;在 Linux 上编译的版本很少。 由于需要部署服务器&#xff0c;因此决定编译 linux 版本。 GitHub原文&#xff1a;https://github.com/KamenLiefu/BG_APPInventor Github编译版本免费下载&#xff1a;…