CNN中的权值共享理解

2024-06-02 05:48
文章标签 共享 理解 cnn 权值

本文主要是介绍CNN中的权值共享理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基本名词对应:

Feature Map : 特征图,特征映射
Weight:权值,权重

权值共享

CNN是权重共享,减少了参数的数量。这个有必要再对比研究一下。
一般神经网络层与层之间的连接是,每个神经元与上一层的全部神经元相连,这些连接线的权重独立于其他的神经元,所以假设上一层是m个神经元,当前层是n个神经元,那么共有 m × n m \times n m×n个连接,也就有 m × n m \times n m×n个权重。权重矩阵就是 m × n m \times n m×n形状。

一般用权重矩阵W表示,每一行是一个神经元与上一层所有神经元相连接的权重的值

而在CNN里的权重共享是如何具体操作的呢?

需要理清的概念是,每个层都是一个展平的结构。原始图像是二维的,用在输入层的输入向量是一整条的。

卷积层存的是什么?

不是我最初理解的存的是多个卷积核的展开值,而是卷积计算的结果。具体下面会说到。

再理清一下卷积计算,我们知道是拿卷积核与卷积核的感受野里的像素进行卷积计算,

卷积层里存的是什么数值?卷积后的结果?还是权重?但我们知道权重是单独建立的矩阵,是待学习调优的对象,卷积层的值要再往后传,存的必须是像素处理后相关的值。

问题还是存在:卷积层个数与卷积核个数的关系是什么?

每层有多个Feature Map,每个Feature Map通过一种卷积滤波器提取输入的一种特征。每个Feature Map有多个神经元。

比如给定一个输入是32x32像素的图片,Feature Map大小是28x28的神经元阵列,每个神经元对应的值如何计算得来呢?按照卷积计算,比如5x5的卷积核,需要25个参数,也就是权重,在28x28的特征映射 | Feature Map里每个神经元都用这25个参数去进行卷积计算,这样就是所谓的权值共享。

那这个卷积层有多少参数呢?我们看一个Feature Map里每个神经元用的都是一样的5x5的卷积核,按照stride的值往前移动,每一步卷积结果对应一个神经元的值。所以,虽然权值相同,但是每一步下感受野对应的像素值是不同的,得到的结果自然也不同。

参数数量如何计算?单个特征映射里,用的权重一样,卷积核有25个参数,加上每个神经元有一个偏置bias参数,所以共26个参数,也就是一个Feature Map里有26个参数。这个隐层有6个特征图,所以本隐层有26 * 6 = 156个训练参数。

该隐层与输入层有多少连接呢?也很简单,我们看到一个神经元与5x5的像素值相连,共25个连接,注意到bias也是作为一个输入值,所以一个神经元有26个连接。接着看特征樱花色层有多少神经元就可以了,28x28是一个特征映射的神经元阵列,共有6个特征映射,所以得出:26 * 6 * 28 * 28 = 122304个连接。

28x28是怎么得来的?实际上假定的是padding为0,stride为1,就是开始直接把5x5的卷积核放在图像的左上角,5x5的二维矩阵的左上角对应图像的左上角,往右移动,一次一个像素,32 - 5 + 1 = 28,向下移动也是一样。

END.

这篇关于CNN中的权值共享理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

Linux samba共享慢的原因及解决方案

《Linuxsamba共享慢的原因及解决方案》:本文主要介绍Linuxsamba共享慢的原因及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux samba共享慢原因及解决问题表现原因解决办法总结Linandroidux samba共享慢原因及解决

java父子线程之间实现共享传递数据

《java父子线程之间实现共享传递数据》本文介绍了Java中父子线程间共享传递数据的几种方法,包括ThreadLocal变量、并发集合和内存队列或消息队列,并提醒注意并发安全问题... 目录通过 ThreadLocal 变量共享数据通过并发集合共享数据通过内存队列或消息队列共享数据注意并发安全问题总结在 J

深入理解Apache Airflow 调度器(最新推荐)

《深入理解ApacheAirflow调度器(最新推荐)》ApacheAirflow调度器是数据管道管理系统的关键组件,负责编排dag中任务的执行,通过理解调度器的角色和工作方式,正确配置调度器,并... 目录什么是Airflow 调度器?Airflow 调度器工作机制配置Airflow调度器调优及优化建议最

NFS实现多服务器文件的共享的方法步骤

《NFS实现多服务器文件的共享的方法步骤》NFS允许网络中的计算机之间共享资源,客户端可以透明地读写远端NFS服务器上的文件,本文就来介绍一下NFS实现多服务器文件的共享的方法步骤,感兴趣的可以了解一... 目录一、简介二、部署1、准备1、服务端和客户端:安装nfs-utils2、服务端:创建共享目录3、服

一文带你理解Python中import机制与importlib的妙用

《一文带你理解Python中import机制与importlib的妙用》在Python编程的世界里,import语句是开发者最常用的工具之一,它就像一把钥匙,打开了通往各种功能和库的大门,下面就跟随小... 目录一、python import机制概述1.1 import语句的基本用法1.2 模块缓存机制1.

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

深入理解Redis大key的危害及解决方案

《深入理解Redis大key的危害及解决方案》本文主要介绍了深入理解Redis大key的危害及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、背景二、什么是大key三、大key评价标准四、大key 产生的原因与场景五、大key影响与危

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

使用Nginx来共享文件的详细教程

《使用Nginx来共享文件的详细教程》有时我们想共享电脑上的某些文件,一个比较方便的做法是,开一个HTTP服务,指向文件所在的目录,这次我们用nginx来实现这个需求,本文将通过代码示例一步步教你使用... 在本教程中,我们将向您展示如何使用开源 Web 服务器 Nginx 设置文件共享服务器步骤 0 —

Python使用pysmb库访问Windows共享文件夹的详细教程

《Python使用pysmb库访问Windows共享文件夹的详细教程》本教程旨在帮助您使用pysmb库,通过SMB(ServerMessageBlock)协议,轻松连接到Windows共享文件夹,并列... 目录前置条件步骤一:导入必要的模块步骤二:配置连接参数步骤三:实例化SMB连接对象并尝试连接步骤四: