【神经网络】卷积神经网络CNN

卷积神经网络

欢迎访问Blog全部目录!

文章目录

  • 卷积神经网络
  • 1. 神经网络概览
  • 2.CNN(Convolutional Neunal Network)
    • 2.1.学习链接
    • 2.2.CNN结构
      • 2.2.1.基本结构
        • 2.2.1.1输入层
        • 2.2.1.2.卷积层|Convolution Layers
        • 2.2.1.3.池化层|Pooling layers
        • 2.3.1.4.全连接层|Linear Layers
      • 2.2.2.核心要素
    • 2.3.pytorch CNN
      • 2.3.1.区分conv1d与conv2d
      • 2.3.2.CNN搭建与参数
      • 2.3.3.示意图:star:

1. 神经网络概览

Leijnen, Stefan & Veen, Fjodor. (2020). The Neural Network Zoo. Proceedings. 47. 9. 10.3390/proceedings47010009.

2.CNN(Convolutional Neunal Network)

CNN的核心为使用卷积核对图像矩阵进行卷积运算(线性运算)!!!

2.1.学习链接

学习笔记:深度学习(3)——卷积神经网络(CNN)理论篇_cnn理论-CSDN博客
【深度学习】一文搞懂卷积神经网络(CNN)的原理(超详细)_卷积神经网络原理-CSDN博客

2.2.CNN结构

2.2.1.基本结构

在这里插入图片描述

2.2.1.1输入层

​ 图片在计算机中是包括 (宽,高,深)的三维矩阵,元素为灰度值或RGB值,其中矩阵的深即为RGB层次。如果为RGB图片,图片深度为3。图片的三维矩阵即为CNN的输入。(宽,高)矩阵为1个channel,(宽,高)矩阵为特征图

​ 输入层即接收原始图片数据,CNN可以保留图片的连续像素(物体的不变性),加深神经网络对图片的理解。

2.2.1.2.卷积层|Convolution Layers

作用:捕捉图片的局部特征而不受其位置的影响。

多个卷积核叠加即为卷积层。

卷积层后需接激活函数(如ReLU)来引入非线性。

2.2.1.3.池化层|Pooling layers

作用:通过减小特征图的大小(下采样)来减少计算复杂性。它通过选择池化窗口内的最大值或平均值来实现。这有助于提取最重要的特征。

有点类似于图像的模糊处理!

2.3.1.4.全连接层|Linear Layers

全连接层将提取的特征映射转化为网络的最终输出。这可以是一个分类标签、回归值或其他任务的结果。

2.2.2.核心要素

名称name含义
过滤器(卷积核)过滤器为可移动的三维小窗口矩阵(N*N*N)【kernel_size】,它是一组固定的权重。卷积操作即为将卷积核与图像进行逐元素相乘后相加。
步长stride卷积核每次滑动位置的步长。
卷积核的个数out_channels决定输出矩阵的深度depth。一个卷积核输出一个深度层。
填充值zero-padding在外围边缘补充若干圈0,方便从初始位置以步长为单位可以刚好滑倒末尾位置。数据填充的主要目的是确保卷积核能够覆盖输入图像的边缘区域,同时保持输出特征图的大小=输入特征图大小。
如果想要维持特征图大小不变, p a d d i n g = ( k e r n e l _ s i z e − 1 ) / 2 padding=(kernel\_size-1)/2 padding=(kernel_size1)/2!!

以下图为例(图示为conv2d):

步长=2,卷积核个数=2,填充值=1(在图片周围补1圈0),卷积核尺寸为3*3*3

请添加图片描述
在这里插入图片描述

2.3.pytorch CNN

API:torch.nn.convolution-layers — PyTorch 2.2 documentation

2.3.1.区分conv1d与conv2d

conv1dconv2d
输入语音:二维矩阵图像:三维矩阵
卷积核(卷积核尺寸(二维),卷积核个数)(卷积核尺寸(三维),卷积核个数)
总结在特征图内只能竖着扫在特征图内先横着扫再竖着扫

图像的CNN使用的是conv2d!!

2.3.2.CNN搭建与参数

import torch
import torch.nn as nnclass Cnn(nn.Module):def __init__(self):super(Cnn, self).__init__()self.conv1 = nn.Sequential(  # 输入图像尺寸为(1,28,28)nn.Conv2d(in_channels=1,  # 输入图像的深度 灰度图为1,rgb图为3out_channels=16,  # 卷积核个数,输出图像的深度kernel_size=5,  # 卷积核尺寸5*5*1stride=1,  # 步长padding=2  # 填充大小 如果想要 con2d 出来的图片长宽没有变化, padding=(kernel_size-1)/2),  # 输出图像尺寸为(16,28,28)nn.ReLU(),  # 激活函数nn.MaxPool2d(kernel_size=2,  # 池化小区域尺寸2*2,区域模糊# stride=2,  # 步长,默认=kernel_size),  # 输出图像尺寸为(16,14,14))self.conv2 = nn.Sequential(  # 输入图像尺寸为(16,14,14)nn.Conv2d(in_channels=16,  # 输入图像的深度out_channels=32,  # 卷积核个数,输出图像的深度kernel_size=5,  # 卷积核尺寸5*5*16stride=1,  # 步长padding=2  # 填充大小),nn.ReLU(),nn.MaxPool2d(kernel_size=2,)  # 输出图像尺寸为(32,7,7))self.out = nn.Linear(32 * 7 * 7, 10)  # 输出10*1的矩阵def forward(self, x):x = self.conv1(x)x = self.conv2(x)# x图像平铺成 (batch_size=1, 32 * 7 * 7)x = x.view(x.size(0), -1)  # view中一个参数定为-1,代表自动调整这个维度上的元素个数,以保证元素的总数不变。output = self.out(x)return outputcnn = Cnn()
print(cnn)
'''
Cnn((conv1): Sequential((0): Conv2d(1, 16, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2))(1): ReLU()(2): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False))(conv2): Sequential((0): Conv2d(16, 32, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2))(1): ReLU()(2): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False))(out): Linear(in_features=1568, out_features=10, bias=True)
)
'''

2.3.3.示意图⭐️

注:由于画幅有限,示意图仅画了1个大卷积层。
在这里插入图片描述

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

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

相关文章

k8s部署efk

环境简介: kubernetes: v1.22.2 helm: v3.12.0 elasticsearch: 8.8.0 chart包:19.10.0 fluentd: 1.16.2 chart包: 5.9.4 kibana: 8.2.2 chart包:10.1.9 整体架构图: 一、Elasticsearch安装…

归一化技术比较研究:Batch Norm, Layer Norm, Group Norm

归一化层是深度神经网络体系结构中的关键,在训练过程中确保各层的输入分布一致,这对于高效和稳定的学习至关重要。归一化技术的选择(Batch, Layer, GroupNormalization)会显著影响训练动态和最终的模型性能。每种技术的相对优势并…

Codeforces Round 938 (Div. 3) A - F 题解

A. Yogurt Sale 题意:要购买n个酸奶,有两种买法,一种是一次买一个,价格a。一种是一次买两个,价格b,问买n个酸奶的最小价格。 题解:很容易想到用2a和b比较,判断输出即可。 代码&am…

麻雀优化算法(Sparrow Search Algorithm)

注意:本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 ([www.aideeplearning.cn]) 算法背景 麻雀算法(Sparrow Search Algorithm, SSA)是一种受自然界麻雀群体行为启发的优化算法。想象一下,一…

【MacOs】proxychains配置使用

一、开始 1. 安装proxychains 使用brew进行安装 brew install proxychains-ng没有homebrew的,可以使用该命令安装 /usr/bin/ruby -e "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install)"2. 配置代理配置文件 cd /opt/homeb…

day5 nest商业项目初探·一(java转ts全栈/3R教室)

背景:从头一点点学起太慢了,直接看几个商业项目吧,看看根据Java的经验,自己能看懂多少,然后再系统学的话也会更有针对性。先看3R教室公开的 kuromi 移民机构官方网站吧 【加拿大 | 1.5w】Nextjs:kuromi 移民…

专业140+总410+国防科技大学831信号与系统考研经验国防科大电子信息与通信,真题,大纲,参考书。

应群里同学要求,总结一下我自己的复习经历,希望对大家有所借鉴,报考国防科技大学,专业课831信号与系统140,总分410,大家以前一直认为国防科技大学时军校,从而很少关注这所军中清华,现…

Java 基于微信小程序的助农扶贫小程序

博主介绍:✌Java徐师兄、7年大厂程序员经历。全网粉丝13w、csdn博客专家、掘金/华为云等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不…

React - 你知道props和state之间深层次的区别吗

难度级别:初级及以上 提问概率:60% 如果把React组件看做一个函数的话,props更像是外部传入的参数,而state更像是函数内部定义的变量。那么他们还有哪些更深层次的区别呢,我们来看一下。 首先说props,他是组件外部传入的参数,我们知道…

鸿蒙实战开发-相机和媒体库、如何在eTS中调用相机拍照和录像

介绍 此Demo展示如何在eTS中调用相机拍照和录像,以及使用媒体库接口将图片和视频保存的操作。实现效果如下: 效果预览 使用说明 1.启动应用,在权限弹窗中授权后返回应用,进入相机界面。 2.相机界面默认是拍照模式,…

【第二十九篇】BurpSuite杂项综合

文章目录 Intruder模块URL编码Grep检索提取logger日志模块Intruder模块URL编码 假设我们需要对GET请求包中的URL目录进行爆破FUZZ: example.com/xxxx(文件名)Intruder模块会自动对我们的文件名字典进行URL编码 例如payload为1.txt时,burp对其进行URL编码并连接到example.c…

性能优化 - 你知道dns-prefetch有什么用吗

难度级别:中级及以上 提问概率:50% 我们在HTML文档里写一个script标签,为src属性指定Javascript文件网络地址,这是一件再平凡不过的事情。当浏览器加载HTML文档,加载到这个script标签的时候,就会去下载Javascript文件。而在下载之前,就…

携程旅行 abtest

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!wx a15018601872 本文章…

使用 Jenkins、Gitlab、Harbor、Helm、k8s 来实现流水线作业

文章目录 一、流程二、Dockerfile 使用 Jenkins、Gitlab、Harbor、Helm、Kubernetes 来实现一个完整的持续集成和持续部署的流水线作业 一、流程 开发人员提交代码到 Gitlab 代码仓库通过 Gitlab 配置的 Jenkins Webhook 触发 Pipeline 自动构建Jenkins 触发构建构建任务&…

尚硅谷html5+css3(3)布局

1.文档流normal flow -网页是一个多层结构 -通过CSS可以分别为每一层设置样式 -用户只能看到最顶层 -最底层&#xff1a;文档流&#xff08;我们所创建的元素默认都是从文档流中进行排列&#xff09; <head><style>.box1 {background-color: blue;}/*它的父元…

C# + OpencvSharp4 错误信息收集

异常1&#xff1a; 初次使用&#xff0c;如下代码报错&#xff0c;OpenCvSharp.OpenCvSharpException:“imread failed.” Mat src Cv2.ImRead("Source.png", ImreadModes.Unchanged); 原因&#xff1a;检查Nuget包与OpencvSharp4库相关安装是否完整&#xff0c;…

系统架构评估_3.ATAM方法

架构权衡分析方法&#xff08;Architecture Tradeoff Analysis Method&#xff0c;ATAM&#xff09;是在SAAM的基础发展起来的&#xff0c;主要针对性能、实用性、安全性和可修改性&#xff0c;在系统开发之前&#xff0c;对这些质量属性进行评价和折中。 &#xff08;1&#x…

Unity2023使用sdkmanager命令行工具安装Android SDK

1&#xff0c;下载cmdline-tools&#xff0c;官网地址&#xff1a;https://developer.android.com/studio或者https://dl.google.com/android/repository/文件名 文件名对应版本名。例如文件名为commandlinetools-win-9862592_latest.zip 引用Android cmdline-tools 版本与其…

【网络】什么是RPC

RPC 是Remote Procedure Call的缩写&#xff0c;译为远程过程调用。是一个计算机通信协议。 1、为什么需要远程调用 在如何给女朋友解释什么是分布式这一篇文章中介绍过&#xff0c;为了提升饭店的服务能力&#xff0c;饭店从一开始只有一个负责所有事情的厨师发展成有厨师、切…

一种新兴的身份安全理念:身份结构免疫

文章目录 前言一、从身份管理到身份结构免疫二、身份结构免疫应用实践三、典型应用场景前言 随着组织的数字身份数量激增,基于身份的网络攻击活动也在不断增长。在身份优先的安全原则下,新一代身份安全方案需要更好的统一性和控制度。而在现有的身份管理模式中,组成业务运营…