理解卷积神经网络中的权值共享
首先介绍单层网络实行的权重共享袁力介绍
简单从共享的角度来说:权重共享即filter的值共享
卷积神经网络两大核心思想:
1.网络局部连接(Local Connectivity)
2.卷积核参数共享(Parameter Sharing)
两者的一个关键作用就是减少参数数量,使运算变得简洁、高效,能够在超大规模数据集上运算。
下面来用最直观的图示,来阐明两者的作用。
CNN的正确打开方式,如下所示
概括为:一个 的卷积核在图像上扫描,进行特征提取。通常, , 的卷积核较为常用,如果channels为 [公式] 的话(32,64是较为常用的通道数),那么参数总量为 。
- 不进行parameter sharing
如果不用parameter sharing实现上图的运算,卷积核结构就会变成下图所示
这个是不难发现:卷积核的参数数量与图像像素矩阵的大小保持一致,即
例如:Inception V3的输入图像尺寸是192192的,**如果把第一层3332的卷积核去掉参数共享,那么参数数目就会变成192192*32,约为120万个参数,是原来288个参数的50万倍。**
- 不进行local connectivity
如果不用局部连接,那当然就是全连接网络了(fully connect),即每个元素单元与隐层的神经原进行全连接,网络结构如下所示。
此时参数量变为 ,因为像素矩阵很大,所以也会选择较多的隐含层节点,这时一个单隐层的参数数目通常就超过了1千万个,导致网络很难进行训练。
以下是pytorch对多层网络实行的权重共享代码
import torch
import torch.nn as nn
import random
import matplotlib.pyplot as plt# 绘制loss曲线
def plot_curve(data):fig = plt.figure()plt.plot(range(len(data)), data, color='blue')plt.legend(['value'], loc='upper right')plt.xlabel('step')plt.ylabel('value')plt.show()class DynamicNet(nn.Module):def __init__(self, D_in, H, D_out):super(DynamicNet, self).__init__()self.input_linear = nn.Linear(D_in, H)self.middle_linear = nn.Linear(H, H)self.output_linear = nn.Linear(H, D_out)def forward(self, x):h_relu = self.input_linear(x).clamp(min=0)# 重复利用Middle linear模块for _ in range(random.randint(0, 3)):h_relu = self.middle_linear(h_relu).clamp(min=0)y_pred = self.output_linear(h_relu)return y_pred# N是批大小;D是输入维度
# H是隐藏层维度;D_out是输出维度
N, D_in, H, D_out = 64, 1000, 100, 10# 模拟训练数据
x = torch.randn(N, D_in)
y = torch.randn(N, D_out)model = DynamicNet(D_in, H, D_out)
criterion = nn.MSELoss(reduction='sum')
# 用平凡的随机梯度下降训练这个奇怪的模型是困难的,所以我们使用了momentum方法。
optimizer = torch.optim.SGD(model.parameters(), lr=1e-4, momentum=0.9)loss_list = []
for t in range(500):# 前向传播y_pred = model(x)# 计算损失loss = criterion(y_pred, y)loss_list.append(loss.item())# 清零梯度,反向传播,更新权重optimizer.zero_grad()loss.backward()optimizer.step()plot_curve(loss_list)
理解卷积神经网络中的权值共享相关推荐
- 如何理解卷积神经网络中的权值共享
权值共享这个词最开始其实是由LeNet5模型提出来,在1998年,LeCun发布了LeNet网络架构,就是下面这个: 虽然现在大多数的说法是2012年的AlexNet网络是深度学习的开端,但是CNN的 ...
- 卷积神经网络中的权值共享
一.起源 权值共享这个词最开始其实是由LeNet5模型提出来,在1998年,LeCun发布了LeNet网络架构 其实权值共享这个词说全了就是整张图片在使用同一个卷积核内的参数,比如一个3*3*1的卷积 ...
- 神经网络中的权值共享
2012年的AlexNet网络是深度学习的开端,但是CNN的开端最早其实可以追溯到LeNet5模型,它的几个特性在2010年初的卷积神经网络研究中被广泛的使用--其中一个就是权值共享. 神经网络的输入 ...
- 如何理解CNN中的权值共享
记录一下深度学习中CNN中的权值共享 首先,卷积网络的核心思想是将:局部感受野.权值共享(或者权值复制)以及时间或空间亚采样这三种结构思想结合起来获得了某种程度的位移.尺度.形变不变性. 通俗理解,所 ...
- xml文件 卷积神经网络_理解卷积神经网络中的输入与输出形状(Keras实现)
即使我们从理论上理解了卷积神经网络,在实际进行将数据拟合到网络时,很多人仍然对其网络的输入和输出形状(shape)感到困惑.本文章将帮助你理解卷积神经网络的输入和输出形状. 让我们看看一个例子.CNN ...
- 【TensorFlow】TensorFlow从浅入深系列之十二 -- 教你深入理解卷积神经网络中的池化层
本文是<TensorFlow从浅入深>系列之第12篇 TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法) TensorFlow从浅入深系列之二 -- 教你通过思维 ...
- 如何理解卷积神经网络中的通道(channel)
在卷积神经网络中我们通常需要输入 in_channels 和 out_channels ,即输入通道数和输出通道数,它们代表什么意思呢?本文将给出一个形象的理解. 对于通道的理解可以参考下面的这篇文章 ...
- 如何理解卷积神经网络中的1*1卷积
原文:http://blog.csdn.net/chaipp0607/article/details/60868689 我们都知道,卷积核的作用在于特征的抽取,越是大的卷积核尺寸就意味着更大的感受野, ...
- 【TensorFlow】TensorFlow从浅入深系列之十一 -- 教你深入理解卷积神经网络中的卷积层
本文是<TensorFlow从浅入深>系列之第11篇 TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法) TensorFlow从浅入深系列之二 -- 教你通过思维 ...
最新文章
- Alpha多样性稀释曲线rarefraction curve还不会画吗?快看此文
- 刷新ImageNet最高分!谷歌大脑华人研究员发布超强Transformer
- 在Unity3D中连接WCF服务端
- 时间序列预测实例(prophet的血泪史)
- grafana导入json文件没有数据_XAMPP客户端环境无法导入较大Mysql数据库文件的解决方法...
- iOS App版本号compare
- Faster RCNN参数详解
- 监管大屏系统_工厂大屏可视化管控系统,智慧工厂平台是什么,工厂管理大屏软件 - 帆软...
- high-speed A/D performance metrics and Amplifie...
- 清华大学张文增教授110页PPT讲专利申请、检索与解读
- java magnolia,java – Magnolia富文本字段
- Android 系统(270)---开机广播的简单守护以及总结
- 使用DNSObserver检测DNS安全漏洞
- 独立游戏开发(一)-- 安装Unity
- FIX协议教程1-什么是FIX会话和管理消息
- android10新功能,三星A80升级安卓10 更新One UI 2.0内容新功能介绍
- IO、文件、NIO【草案三】
- 互斥锁的概念和使用方法。
- SAP ERP 与 Oracle ERP 比较
- Java web p41
热门文章
- 如何选择一家好的Java培训机构?
- 哪位有利用matlab中的s函数编写的光伏系统mppt仿真程序,Simulink的MPPT的S函数程序...
- 【均衡器】LS均衡器,DEF均衡器以及LMMSE均衡器的误码率性能对比仿真
- 无传感器永磁同步电机电机自适应自抗扰ADRC控制策略
- 设计分享|单片机直流电机转速控制(汇编)
- 【前后端分离】前台多表联查
- SQL优化之常用优化工具
- uni-app跨域解决方案
- IDL和MATLAB读取grib数据
- us news2017计算机科学,2017年USNews最新美国大学计算机专业研究生排名TOP120