DAY09:【pytorch】nn网络层

1、卷积层

1.1 Convolution

1.1.1 卷积操作

  • 卷积运算:卷积核在输入信号(图像)上滑动,相应位置上进行乘加
  • 卷积核:又称为滤波器、过滤器,可认为是某种模式、某种特征

1.1.2 卷积维度

一般情况下,卷积核在几个维度上滑动就是几维卷积

  • 一维卷积
    在这里插入图片描述
  • 二维卷积
    在这里插入图片描述
  • 三维卷积
    在这里插入图片描述

1.2 nn.Conv2d

在这里插入图片描述

# nn.Conv2d(
#     in_channels,
#     out_channels,
#     kernel_size,
#     stride=1,
#     padding=0,
#     dilation=1,
#     groups=1,
#     bias=True,
#     padding_mode='zeros'
# )

1.2.1 基本介绍

功能:对多个二维信号进行二维卷积
主要参数:

  • in_channels:输入通道数
  • out_channels:输出通道数,等价于卷积核个数
  • kernel_size:卷积核尺寸
  • stride:步长
  • padding:填充个数
  • dilation:空洞卷积大小
  • groups:分组卷积设置,默认为1,即不分组
  • bias:是否使用偏置

尺寸计算:
H o u t = ⌊ H i n + 2 × p a d d i n g [ 0 ] − d i l a t i o n [ 0 ] × ( k e r n e l _ s i z e [ 0 ] − 1 ) − 1 s t r i d e [ 0 ] + 1 ⌋ H_{out} = \lfloor \frac{H_{in} + 2 \times padding[0] - dilation[0] \times (kernel\_size[0] - 1) - 1}{stride[0]} + 1 \rfloor Hout=stride[0]Hin+2×padding[0]dilation[0]×(kernel_size[0]1)1+1

1.2.2 代码框架

    conv_layer = nn.Conv2d(3, 1, 3)   # input:(i, o, size) weights:(o, i , h, w)nn.init.xavier_normal_(conv_layer.weight.data)img_conv = conv_layer(img_tensor)

1.3 nn.ConvTranspose

# nn.ConvTranspose(
#     in_channels,
#     out_channels,
#     kernel_size,
#     stride=1,
#     padding=0,
#     output_padding=0,
#     groups=1,
#     bias=True,
#     dilation=1,
#     padding_mode='zeros'
# )

1.3.1 基本介绍

功能:用于对图像进行上采样

对比:

  1. 正常卷积:假设图像尺寸为4×4,卷积核为3×3,padding=0,stride=1,
    则图像: I 16 ∗ 1 I_{16*1} I161,卷积核: K 4 ∗ 16 K_{4*16} K416,输出: O 4 ∗ 1 = K 4 ∗ 16 × I 16 ∗ 1 O_{4*1}=K_{4*16}×I_{16*1} O41=K416×I161
  2. 转置卷积:假设图像尺寸为2×2,卷积核为3×3,padding=0,stride=1,
    则图像: I 4 ∗ 1 I_{4*1} I41,卷积核: K 16 ∗ 4 K_{16*4} K164,输出: O 16 ∗ 1 = K 16 ∗ 4 × I 4 ∗ 1 O_{16*1}=K_{16*4}×I_{4*1} O161=K164×I41

主要参数:

  • in_channels:输入通道数
  • out_channels:输出通道数
  • kernel_size:卷积核大小
  • stride:步长
  • padding:填充
  • dilation:空洞卷积大小
  • groups:分组卷积
  • bias:是否使用偏置

尺寸计算: H o u t = ( H i n − 1 ) × s t r i d e [ 0 ] − 2 × p a d d i n g [ 0 ] + d i l a t i o n [ 0 ] × ( k e r n e l _ s i z e [ 0 ] − 1 ) + o u t p u t _ p a d d i n g [ 0 ] + 1 H_{out} = (H_{in} - 1) \times stride[0] - 2 \times padding[0] + dilation[0] \times (kernel\_size[0] - 1) + output\_padding[0] + 1 Hout=(Hin1)×stride[0]2×padding[0]+dilation[0]×(kernel_size[0]1)+output_padding[0]+1

1.3.2 代码框架

	conv_layer = nn.ConvTranspose2d(3, 1, 3, stride=2)   # input:(i, o, size)nn.init.xavier_normal_(conv_layer.weight.data)img_conv = conv_layer(img_tensor)

2、池化层

2.1 概念

在这里插入图片描述

对信息进行收集并总结,类似水池收集水资源,因而得名池化层

  • 收集:多变少
  • 总结:最大值/平均值

2.2 nn.MaxPool2d

# nn.MaxPool2d(
#     kernel_size,
#     stride=None,
#     padding=0,
#     dilation=1,
#     return_indices=False,
#     ceil_mode=False,
# )

2.2.1 基本介绍

功能:对二维信号(图像)进行最大值池化
主要参数:

  • kernel_size:池化核大小
  • stride:步长
  • padding:填充
  • dilation:池化核间隔大小
  • return_indices:是否返回最大值索引
  • ceil_mode:是否向上取整

2.2.2 代码框架

  • MaxPool2d
	maxpool_layer = nn.MaxPool2d((2, 2), stride=(2, 2))   # input:(i, o, size) weights:(o, i , h, w)img_pool = maxpool_layer(img_tensor)
  • MaxPool2d unpool
    # poolingimg_tensor = torch.randint(high=5, size=(1, 1, 4, 4), dtype=torch.float)maxpool_layer = nn.MaxPool2d((2, 2), stride=(2, 2), return_indices=True)img_pool, indices = maxpool_layer(img_tensor)# unpoolingimg_reconstruct = torch.randn_like(img_pool, dtype=torch.float)maxunpool_layer = nn.MaxUnpool2d((2, 2), stride=(2, 2))img_unpool = maxunpool_layer(img_reconstruct, indices)

2.3 nn.AvgPool2d

# nn.AvgPool2d(
#     kernel_size,
#     stride=None,
#     padding=0,
#     ceil_mode=False,
#     count_include_pad=True,
#     divisor_override=None
# )

2.3.1 基本介绍

功能:对二维信号(图像)进行平均值池化
主要参数:

  • kernel_size:池化核大小
  • stride:步长
  • padding:填充
  • ceil_mode:是否向上取整
  • count_include_pad:是否包含填充的像素
  • divisor_override:除数重写

2.3.2 代码框架

  • AvgPool2d
	avgpoollayer = nn.AvgPool2d((2, 2), stride=(2, 2))   # input:(i, o, size) weights:(o, i , h, w)img_pool = avgpoollayer(img_tensor)
  • AvgPool2d divisor_override
	img_tensor = torch.ones((1, 1, 4, 4))avgpool_layer = nn.AvgPool2d((2, 2), stride=(2, 2), divisor_override=3)img_pool = avgpool_layer(img_tensor)

3、线性层

3.1 概念

在这里插入图片描述

又称全连接层,其每个神经元与上一层所有神经元相连实现对前一层的线性组合、线性变换

3.2 nn.Linear

# nn.Linear(
#     in_features,
#     out_features,
#     bias=True
# )

3.2.1 基本介绍

功能:对一维信号(向量)进行线性组合

主要参数:

  • in_features:输入结点数
  • out_features:输出结点数
  • bias:是否使用偏置

计算公式: y = x W T + b i a s y = xW^T + bias y=xWT+bias

3.2.2 代码框架

	inputs = torch.tensor([[1., 2, 3]])linear_layer = nn.Linear(3, 4)linear_layer.weight.data = torch.tensor([[1., 1., 1.],[2., 2., 2.],[3., 3., 3.],[4., 4., 4.]])linear_layer.bias.data.fill_(0.5)output = linear_layer(inputs)

4、激活函数层

4.1 nn.Sigmoid

在这里插入图片描述

计算公式: y = 1 1 + e − x y = \frac{1}{1 + e^{-x}} y=1+ex1

梯度公式: y ‘ = y × ( 1 − y ) y^{`} = y \times (1 - y) y=y×(1y)

特性:

  • 输出值在(0, 1),符合概率
  • 导数范围是[0, 0.25],易导致梯度消失
  • 输出为非0,破坏数据分布

4.2 nn.tanh

在这里插入图片描述
计算公式: y = s i n x c o s x = e x − e − x e − + e − x = 2 1 + e − 2 x + 1 y = \frac{sinx}{cosx} = \frac{e^x - e^{-x}}{e^{-} + e^{-x}} = \frac{2}{1 + e^{-2x}} + 1 y=cosxsinx=e+exexex=1+e2x2+1

梯度公式: y ‘ = 1 − y 2 y^{`} = 1 - y^2 y=1y2

特性:

  • 输出值在(-1, 1),数据符合0均值
  • 导数范围是(0, 1),易导致梯度消失

4.3 nn.ReLU

在这里插入图片描述
计算公式: y = m a x ( 0 , x ) y = max(0, x) y=max(0,x)

梯度公式:
y ′ = { 1 , x > 0 undefined , x = 0 0 , x < 0 y' = \begin{cases} 1, & x > 0 \\ \text{undefined}, & x = 0 \\ 0, & x < 0 \end{cases} y= 1,undefined,0,x>0x=0x<0

特性:

  • 输出值均为正数,负半轴导致死神经元
  • 导数是1,缓解梯度消失,但易引发梯度爆炸

在这里插入图片描述

4.3.1 nn.LeakuReLU

  • negative_slope: 负斜率的值,默认为0.01,即负斜率

4.3.2 nn.PReLU

  • init:可学习斜率

4.3.3 nn.RReLU

  • lower:均匀分布下限
  • upper:均匀分布上限

微语录:黑暗中有人擎花而来,惊动火焰,燃烧万千蝴蝶迷了眼。

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

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

相关文章

Pinpoint - 大型分布式系统的 APM(应用性能管理)工具

文章目录 一、关于 Pinpoint最新版本&#xff08;2024/10/23&#xff09;-- v3.0.1PHP, PYTHON 二、概述支持的模块 一、关于 Pinpoint Pinpoint 是一个用于大型分布式系统的 APM&#xff08;应用性能管理&#xff09;工具&#xff0c;由 Java / PHP/PYTHON 编写。 受 Dapper …

设计模式实践:模板方法、观察者与策略模式详解

目录 1 模板方法1.1 模板方法基本概念1.2 实验1.2.1 未使用模板方法实现代码1.2.2 使用模板方法的代码 2 观察者模式2.1 观察者模式基本概念2.2 实验 3 策略模式3.1 策略模式基本概念3.2 实验 1 模板方法 1.1 模板方法基本概念 定义&#xff1a;一个操作中的算法的骨架 &…

Vue 2.0和3.0笔记

Vue 3 关于组件 今天回顾了下2.0关于组件的内容&#xff0c;3.0定义组件的方式多了一种就是通过单文件组件&#xff08;Single-File Component&#xff09;的方式将Vue的模板&#xff0c;逻辑和样式放到一个文件中&#xff0c;2.0则不同&#xff0c;它是将模板放到一个属性中…

前端面试-微前端

1. 什么是微前端&#xff1f;它的核心价值是什么&#xff1f; 答案&#xff1a; 微前端是一种将前端应用拆分为独立模块的架构模式&#xff0c;每个模块可由不同团队独立开发、测试、部署和运行。其核心价值包括&#xff1a; 技术栈无关性&#xff1a;支持 React、Vue、Angul…

Axure高保真AI算法训练平台

点击下载《Axure高保真AI算法训练平台(.rp) 》 原型效果&#xff1a;https://axhub.im/ax9/69fdf8f2b10b59c3/#g1 摘要 本文介绍了一款功能全面且高效的AI算法训练平台&#xff0c;旨在为数据科学家、研究人员和工程师提供从数据准备到模型部署的一站式解决方案。该平台由四大…

Ubuntu服务器日志满audit:backlog limit exceeded了会报错解决方案-Linux 审计系统 (auditd) 工具

auditd 是 Linux 系统中的审计守护进程&#xff0c;负责收集、记录和监控系统安全相关事件。以下是相关工具及其功能&#xff1a; 核心组件 auditd - 审计守护进程 系统的审计服务主程序 收集系统调用信息并写入日志文件 通常存储在 /var/log/audit/audit.log auditctl - 审计控…

Windows10系统RabbitMQ无法访问Web端界面

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 项目场景&#xff1a; 在一个基于 .NET 的分布式项目中&#xff0c;团队使用 RabbitMQ 作为消息队列中间件&#xff0c;负责模块间的异步通信。开发环境为 Windows 10 系统&#xff0c;开发人员按照官…

Qt 的 事件队列

Qt 的 事件队列 是其核心事件处理机制之一&#xff0c;用于管理和分发系统与用户生成的事件&#xff08;如鼠标点击、键盘输入、定时器、信号槽中的队列连接等&#xff09;。理解 Qt 的事件队列对多线程、界面响应以及异步处理尤为关键。 一、Qt 的事件处理模型概览 Qt 是基于…

无人机自主导航与路径规划技术要点!

一、自主导航与路径规划技术要点 1. 传感器融合 GPS/北斗定位&#xff1a;提供全局定位&#xff0c;但在室内或遮挡环境下易失效。 惯性测量单元&#xff08;IMU&#xff09;**&#xff1a;通过加速度计和陀螺仪实时追踪姿态&#xff0c;弥补GPS信号丢失时的定位空缺。 …

Before After:SQL整容级优化

首先说明这个优化有一定提升&#xff0c;但不是我所期望的 我接到一个涉及优化的SQL&#xff0c;具体内容实在太长。而且可能也不利于阅读。于是我脱敏以及简化一下。SQL中间大量的充斥着 (select 列名1 from t1 where t1.id t2.id ) A, (select 列名2 from t1 where t1.id …

道可云人工智能每日资讯|首届世界人工智能电影节在法国尼斯举行

道可云元宇宙每日简报&#xff08;2025年4月15日&#xff09;讯&#xff0c;今日元宇宙新鲜事有&#xff1a; 杭州《西湖区打造元宇宙产业高地的扶持意见》发布 杭州西湖区人民政府印发《西湖区打造元宇宙产业高地的扶持意见》。该意见已于4月4日正式施行&#xff0c;有效期至…

JVM 为什么需要即时编译器?

JVM之所以需要即时编译器 (JIT Compiler)&#xff0c;是为了提高 Java 程序的执行性能&#xff0c;弥补纯解释器执行的不足。 我们可以从以下几个角度来分析一下这个问题&#xff1a; 1. 解释器的性能瓶颈: 逐条解释的开销: 解释器需要逐条读取 Java 字节码指令&#xff0c;并…

PromptUp 网站介绍:AI助力,轻松创作

1. 网站定位与核心功能 promptup.net 可能是一个面向 创作者、设计师、营销人员及艺术爱好者 的AI辅助创作平台,主打 零门槛、智能化的内容生成与优化。其核心功能可能包括: AI艺术创作:通过输入关键词、选择主题或拖放模板,快速生成风格多样的数字艺术作品(如插画、海报…

ThingsBoard3.9.1 MQTT Topic(1)

1.网关转发子设备的遥测信息, Topic:v1/gateway/telemetry { "m1": [{ "mode": "CW", "temperature": 23 }], "m2": [{ "mode": "CW", "temperature": 23 }] } 说明&#xff1a;json格式&a…

React 入门教程:构建第一个 React 应用

本教程将带你从零开始构建你的第一个 React 应用。我们将创建一个简单的计数器应用&#xff0c;涵盖 React 的基本概念和开发流程。 准备工作 在开始之前&#xff0c;请确保你的开发环境满足以下要求&#xff1a; Node.js (建议使用最新的 LTS 版本) npm 或 yarn (Node.js 安…

vue3中,element-plus中el-input的v-model和value的用法示例

el-input的v-model&#xff0c;邦定响应式变量 <el-col :span"6"><el-form-item label"检验类别" prop"verifyType"><el-input v-model"applyAllInfo.applyBasicInfo.verifyTypeName" readonly /></el-form-item…

策略模式随笔~

若感行文枯燥&#xff0c;请移步至文末Gitee地址中查看源码自行测试感受策略模式之魅力。 一、策略模式的核心概念 策略模式的定义 定义算法族&#xff0c;封装每个算法&#xff0c;使其可互换。 核心三要素 Context&#xff1a;上下文&#xff0c;负责接收客户端请求并委托…

Linux的目录结构(介绍,具体目录结构)

目录 介绍 具体目录结构 简洁的目录解释 详细的目录解释 介绍 Linux的文件系统是采用级层式的树状目录结构&#xff0c;在此结构的最上层是根目录“/”。Linux的世界中&#xff0c;一切皆文件&#xff08;比如&#xff1a;Linux会把硬件映射成文件来管理&#xff09; 具体目…

AWS CloudFront加速S3配置跨域

1、点击分配 源我们就选择S3–>选择我们要加速的S3存储桶 2、创建OAC访问方式 在我们的来源访问处–>来源访问控制设置(推荐)–>选择创建新的OAC(Create new OAC)–>自定义名字按默认选项保存–>选择刚刚新创建的OAC 3、选择查看器的配置 根据具体情况&#x…

进程控制(上)【Linux操作系统】

进程控制 写时拷贝 本质是一种减少深拷贝的方法 Linux中有很多拷贝的场景都用得上写时拷贝&#xff0c;下面以创建子进程时的写时拷贝为例&#xff1a; 子进程被创建的时候&#xff1a; 会继承父进程的mm_struct和页表 所以子进程刚刚继承时&#xff0c;父子进程的代码和数据…