四川网站开发公司/站长工具域名

四川网站开发公司,站长工具域名,成都网站建设电话咨询,关于网站制作的指标从全连接到卷积 MLP的缺陷,假设有如下的场景: 分类猫和狗的图片 使用一个还不错的相机采集图片(12M像素)RGB图片有 36M元素使用100大小的单隐藏层MLP,模型有 3.6B元素 远多于世界上所有猫和狗总数(900M狗,600M猫) …

从全连接到卷积

MLP的缺陷,假设有如下的场景:
分类猫和狗的图片

  • 使用一个还不错的相机采集图片(12M像素)
  • RGB图片有 36M元素
  • 使用100大小的单隐藏层MLP,模型有 3.6B元素
    • 远多于世界上所有猫和狗总数(900M狗,600M猫)
      在这里插入图片描述

在图片里面找模式的原则:1、平移不变性 2、局部性

重新考察全连接层

  • 将输入和输出变形为矩阵(宽度,高度)

  • 将权重变形为4-D张量(h, w)到(h’, w’)
    h i , j = ∑ k , l w i , j , k , l x k , l = ∑ a , b v i , j , a , b x i + a , j + b h_{i,j} = \sum_{k,l} w_{i,j,k,l} x_{k,l} = \sum_{a,b} v_{i,j,a,b} x_{i+a,j+b} hi,j=k,lwi,j,k,lxk,l=a,bvi,j,a,bxi+a,j+b

  • V 是 W 的重新索引 v i , j , a , b = w i , j , i + a , j + b v_{i,j,a,b} = w_{i,j,i+a,j+b} vi,j,a,b=wi,j,i+a,j+b

原则 #1 - 平移不变性

  • x 的平移导致 h 的平移 h i , j = ∑ a , b v i , j , a , b x i + a , j + b h_{i,j} = \sum_{a,b} v_{i,j,a,b} x_{i+a,j+b} hi,j=a,bvi,j,a,bxi+a,j+b
  • v 不应该依赖于 (i, j)
  • 解决方案: v i , j , a , b = v a , b v_{i,j,a,b} = v_{a,b} vi,j,a,b=va,b
    h i , j = ∑ a , b v a , b x i + a , j + b h_{i,j} = \sum_{a,b} v_{a,b} x_{i+a,j+b} hi,j=a,bva,bxi+a,j+b这就是 2 维卷积(数学上叫 2 维交叉相关)

原则 #2 - 局部性

h i , j = ∑ a , b v a , b x i + a , j + b h_{i,j} = \sum_{a,b} v_{a,b} x_{i+a,j+b} hi,j=a,bva,bxi+a,j+b

  • 当评估 h i , j h_{i,j} hi,j 时,我们不应该用远离 x i , j x_{i,j} xi,j 的参数
  • 解决方案:当 ∣ a ∣ , ∣ b ∣ > Δ |a|, |b| > \Delta a,b>Δ 时,使得 v a , b = 0 v_{a,b} = 0 va,b=0 h i , j = ∑ a = − Δ Δ ∑ b = − Δ Δ v a , b x i + a , j + b h_{i,j} = \sum_{a=-\Delta}^{\Delta} \sum_{b=-\Delta}^{\Delta} v_{a,b} x_{i+a,j+b} hi,j=a=ΔΔb=ΔΔva,bxi+a,j+b

总结

  • 对全连接层使用平移不变性和局部性得到卷积层

h i , j = ∑ a , b v i , j , a , b x i + a , j + b h_{i,j} = \sum_{a,b} v_{i,j,a,b} x_{i+a,j+b} hi,j=a,bvi,j,a,bxi+a,j+b -> h i , j = ∑ a = − Δ Δ ∑ b = − Δ Δ v a , b x i + a , j + b h_{i,j} = \sum_{a=-\Delta}^{\Delta} \sum_{b=-\Delta}^{\Delta} v_{a,b} x_{i+a,j+b} hi,j=a=ΔΔb=ΔΔva,bxi+a,j+b

卷积层

在这里插入图片描述

二维交叉相关

在这里插入图片描述

二维卷积层

在这里插入图片描述

输入和输出的维度

  • 输入 X \mathbf{X} X: n h × n w n_h \times n_w nh×nw
  • W \mathbf{W} W: k h × k w k_h \times k_w kh×kw
  • 偏差 b ∈ R b \in \mathbb{R} bR
  • 输出 Y \mathbf{Y} Y: ( n h − k h + 1 ) × ( n w − k w + 1 ) (n_h - k_h + 1) \times (n_w - k_w + 1) (nhkh+1)×(nwkw+1) Y = X ⋆ W + b \mathbf{Y} = \mathbf{X} \star \mathbf{W} + b Y=XW+b
  • W \mathbf{W} W b b b 是可学习的参数

交叉相关 vs 卷积

  • 二维交叉相关
    y i , j = ∑ a = 1 h ∑ b = 1 w w a , b x i + a , j + b y_{i,j} = \sum_{a=1}^{h} \sum_{b=1}^{w} w_{a,b} x_{i+a,j+b} yi,j=a=1hb=1wwa,bxi+a,j+b

  • 二维卷积
    y i , j = ∑ a = 1 h ∑ b = 1 w w − a , − b x i + a , j + b y_{i,j} = \sum_{a=1}^{h} \sum_{b=1}^{w} w_{-a,-b} x_{i+a,j+b} yi,j=a=1hb=1wwa,bxi+a,j+b

  • 由于对称性,在实际使用中没有区别

一维和三维交叉相关

一维

y i = ∑ a = 1 h w a x i + a y_i = \sum_{a=1}^{h} w_a x_{i+a} yi=a=1hwaxi+a

  • 文本
  • 语言
  • 时序序列

三维

y i , j , k = ∑ a = 1 h ∑ b = 1 w ∑ c = 1 d w a , b , c x i + a , j + b , k + c y_{i,j,k} = \sum_{a=1}^{h} \sum_{b=1}^{w} \sum_{c=1}^{d} w_{a,b,c} x_{i+a,j+b,k+c} yi,j,k=a=1hb=1wc=1dwa,b,cxi+a,j+b,k+c

  • 视频
  • 医学图像
  • 气象地图

总结

  • 卷积层将输入和核矩阵进行交叉相关,加上偏移后得到输出
  • 核矩阵和偏移是可学习的参数
  • 核矩阵的大小是超参数

代码

首先定义一个函数计算二维互相关运算:

import torch
from torch import nn
from d2l import torch as d2ldef corr2d(X, K):  #@save"""计算二维互相关运算"""h, w = K.shape # 获取核矩阵的尺寸Y = torch.zeros((X.shape[0] - h + 1, X.shape[1] - w + 1)) #初始化输出矩阵for i in range(Y.shape[0]):for j in range(Y.shape[1]):Y[i, j] = (X[i:i + h, j:j + w] * K).sum() # 这里不是矩阵乘法,而是按元素乘法return Y

先来验证一下上述代码写的有没有问题:

X = torch.tensor([[0.0, 1.0, 2.0], [3.0, 4.0, 5.0], [6.0, 7.0, 8.0]])
K = torch.tensor([[0.0, 1.0], [2.0, 3.0]])
corr2d(X, K)

在这里插入图片描述
下面就实现二维卷积层:

class Conv2D(nn.Module):def __init__(self, kernel_size):super().__init__()self.weight = nn.Parameter(torch.rand(kernel_size))self.bias = nn.Parameter(torch.zeros(1))# 权重和偏置都是可以学习的def forward(self, x):return corr2d(x, self.weight) + self.bias

图像中目标的边缘检测

假设黑色为 0 ,白色为 1 :

X = torch.ones((6, 8))
X[:, 2:6] = 0
X

在这里插入图片描述
接下来,我们构造一个高度为 1 1 1、宽度为 2 2 2的卷积核 K 。当进行互相关运算时,如果水平相邻的两元素相同,则输出为零,否则输出为非零。

K = torch.tensor([[1.0, -1.0]])
# 这个卷积核k只可以检测垂直的边缘
Y = corr2d(X, K)
Y

在这里插入图片描述
但是上述实现的卷积核 K 只可以检测垂直边缘:
下图可以发现,将矩阵转置后,就检测不出来了
在这里插入图片描述
是否可以学习由 X 生成 Y 的卷积核呢?

# 构造一个二维卷积层,它具有1个输出通道和形状为(1,2)的卷积核
conv2d = nn.Conv2d(1,1, kernel_size=(1, 2), bias=False)# 这个二维卷积层使用四维输入和输出格式(批量大小、通道、高度、宽度),
# 其中批量大小和通道数都为1
X = X.reshape((1, 1, 6, 8))
Y = Y.reshape((1, 1, 6, 7))
lr = 3e-2  # 学习率for i in range(10):Y_hat = conv2d(X) # 通过卷积层 conv2d 对输入张量 X 进行卷积操作得到的预测值。l = (Y_hat - Y) ** 2 #使用一个均方误差conv2d.zero_grad()  # 将梯度设为0 l.sum().backward()# 迭代卷积核:梯度下降conv2d.weight.data[:] -= lr * conv2d.weight.gradif (i + 1) % 2 == 0:print(f'epoch {i+1}, loss {l.sum():.3f}')

在这里插入图片描述
下图可以发现,和构造出来的[-1,1]很接近了:
在这里插入图片描述

QA 思考

Q1:为什么不应该看那么远?感受野不是越大越好吗?
A1:这就类似于全连接层,我把层做的很浅很胖,效果没有我把层做的很深很瘦的好,尽管数学上两者是等价的。这里做一个小的 Kernel ,做的比较深 ,实践表明是最好的。

Q2:二维卷积层,有没有可能同时使用两个不同尺寸的Kernel进行计算,然后再计算出一个更合适的Kernel,从而提高特征提取的性能。
A2:GoogleNet 论文的设计思路。

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

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

相关文章

目标识别与双目测距(1)环境搭建:Ubuntu+yolov5+pcl库

环境情况 ubuntu 18.04 → 20.04(最终) 安装Ubuntu1804虚拟机系统 Anaconda:可参考我的另一篇文章 Python 3.6.13 → 3.8(最终)Anaconda3-2021.05 目标识别:YOLOv5相关 1、安装git sudo apt install gi…

LinuxTCP/UDP基础概念

TCP(传输控制协议) TCP 是一种面向连接的、可靠的、基于字节流的传输层通信协议。它的主要特点包括: 面向连接:在传输数据之前,需要通过“三次握手”建立连接;传输结束后,通过“四次挥手”断开…

人工智能通识速览一(神经网络)(编辑中)

上篇:人工智能通识速览一(机器学习) 人工智能通识速览一(机器学习)(编辑中)-CSDN博客https://blog.csdn.net/siper12138/article/details/146512068?sharetypeblogdetail&sharerId1465120…

【数据标准】数据标准化框架体系-基础类数据标准

导读:数据标准化的四大基础类标准(业务术语、业务规则、命名规范、代码标准)是企业数据治理的核心支柱。主要作用体现在​消除业务与技术间的语义鸿沟​(通过统一术语与命名规范),​保障数据全生命周期的质…

可发1区的超级创新思路(python\matlab实现):MPTS+Lconv+注意力集成机制的Transformer时间序列模型

首先声明,该模型为原创!原创!原创!且该思路还未有成果发表,感兴趣的小伙伴可以借鉴! 应用场景 该模型主要用于时间序列数据预测问题,包含功率预测、电池寿命预测、电机故障检测等等。 一、模型整体架构(本文以光伏功率预测为例) 本模型由多尺度特征提取模块(MPTS)…

红宝书第二十一讲:详解JavaScript的模块化(CommonJS与ES Modules)

红宝书第二十一讲:详解JavaScript的模块化(CommonJS与ES Modules) 资料取自《JavaScript高级程序设计(第5版)》。 查看总目录:红宝书学习大纲 一、模块化的意义:分而治之 模块化解决代码依赖混…

非手性分子发光有妙招:借液晶之力,实现高不对称圆偏振发光

*本文只做阅读笔记分享* 一、圆偏振发光研究背景与挑战 圆偏振发光(CPL)材料在3D显示、光电器件等领域大有用处,衡量它的一个重要指标是不对称发光因子(glum)。早期CPL材料的glum值低,限制了实际应用。为…

MySQL数据库精研之旅第五期:CRUD的趣味探索(上)

专栏:MySQL数据库成长记 个人主页:手握风云 目录 一、CRUD简介 二、Create新增 2.1. 语法 2.2. 示例 三、Retrieve检索 3.1. 语法 3.2. 示例 一、CRUD简介 CURD是对数据库中的记录进行基本的增删改查操作:Create(创建)、Retrieve(检索…

【银河麒麟系统常识】需求:安装.NET SDK

前提 网络状态正常(非离线安装); 终端命令如下所示 根据不同系统的版本,自行选择,逐行执行即可; # 基于 Ubuntu/Debian 的银河麒麟系统 wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O…

行业智能体大爆发,分布式智能云有解

Manus的一夜爆红,在全球范围内引爆关于AI智能体的讨论。 与过去一般的AI助手不同,智能体(AI Agent)并非只是被动响应,而是主动感知、决策并执行的应用。Gartner预测,到2028年,15%的日常工作决策…

工作记录 2017-03-13

工作记录 2017-03-13 序号 工作 相关人员 1 修改邮件上的问题。 开始处理操作日志部分。 测试了C#和MySql的连接。 更新RD服务器。 郝 更新的问题 1、 修改了CMS1500的打印,NDC的内容用了小的字体。 2、在Cliams List中可以查看Job的Notes。 3、Payment Po…

Codeforces Round 1014 (Div. 2)(A-D)

题目链接&#xff1a;Dashboard - Codeforces Round 1014 (Div. 2) - Codeforces A. Kamilka and the Sheep 思路 最大值-最小值 代码 void solve(){int n;cin>>n;vi a(n10);int mx0;int miinf;for(int i1;i<n;i){cin>>a[i];mimin(mi,a[i]);mxmax(mx,a[i])…

[操作系统,学习记录]3.进程(2)

1.fork(); 玩法一&#xff1a;通过返回值if&#xff0c;else去执行不同的代码片段 玩法二&#xff1a;if&#xff0c;else然后调用execve函数去执行新的程序 2.进程终止&#xff1a; 退出码&#xff0c;子进程通过exit/return返回&#xff0c;父进程wait/waitpid等待而得&am…

Masked Attention 在 LLM 训练中的作用与原理

在大语言模型&#xff08;LLM&#xff09;训练过程中&#xff0c;Masked Attention&#xff08;掩码注意力&#xff09; 是一个关键机制&#xff0c;它决定了 模型如何在训练时只利用过去的信息&#xff0c;而不会看到未来的 token。这篇文章将帮助你理解 Masked Attention 的作…

css选择最后结尾的元素DOM

前言 选中最后一个元素&#xff0c;实际使用非常频繁。 解决方案 使用 CSS 提供的选择器&#xff0c;即可完成。 如下代码示例&#xff0c;两种选择器均可实现。 <p>...</p>p:last-child{ background:#ff0000; }p:nth-last-child(1){background:#ff0000; }p&…

瑞芯微RKRGA(librga)Buffer API 分析

一、Buffer API 简介 在瑞芯微官方的 librga 库的手册中&#xff0c;有两组配置 buffer 的API&#xff1a; importbuffer 方式&#xff1a; importbuffer_virtualaddr importbuffer_physicaladdr importbuffer_fd wrapbuffer 方式&#xff1a; wrapbuffer_virtualaddr wrapb…

Linux线程池实现

1.线程池实现 全部代码&#xff1a;whb-helloworld/113 1.唤醒线程 一个是唤醒全部线程&#xff0c;一个是唤醒一个线程。 void WakeUpAllThread(){LockGuard lockguard(_mutex);if (_sleepernum)_cond.Broadcast();LOG(LogLevel::INFO) << "唤醒所有的休眠线程&q…

微信小程序逆向开发

一.wxapkg文件 如何查看微信小程序包文件&#xff1a; 回退一级 点击进入这个目录 这个就是我们小程序对应的文件 .wxapkg概述 .wxapkg是微信小程序的包文件格式&#xff0c;且其具有独特的结构和加密方式。它不仅包含了小程序的源代码&#xff0c;还包括了图像和其他资源文…

多输入多输出 | Matlab实现CPO-LSTM冠豪猪算法优化长短期记忆神经网络多输入多输出预测

多输入多输出 | Matlab实现CPO-LSTM冠豪猪算法优化长短期记忆神经网络多输入多输出预测 目录 多输入多输出 | Matlab实现CPO-LSTM冠豪猪算法优化长短期记忆神经网络多输入多输出预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现CPO-LSTM冠豪猪算法优化长短期…

视频编码器的抉择:x264、x265、libaom、vvenc 对比测试实验

264、x265、libaom、vvenc 对比测试实验 测试机器配置&#xff1a;Apple M1 Pro -16G编码器版本&#xff08;选择自己编译&#xff09;&#xff1a;所有源码都是当前最新更新的状态&#xff0c;此外各类编码具体的编译过程可参考我的相关系列博客。 编码器GitHubx264git clon…