AlexNet,ZFNet详解

1 AlexNet

网络结构

对于AlexNet网络来说,因为当时资源环境受限,他从第一步卷积开始就把一个图像分到两个GPU上训练,然后中间进行组合最后进行融合成全连接成1000个置信度

1 得到一张3x224x224的图像,然后进行11x11的卷积,卷积两次,分别分配到不同的GPU上

分别得到,两个48x55x55的feature map,然后进行最大池化操作从48x55x55变成48x27x27

2 分别进行相同的卷积,使用5x5卷积,不改变feature map的尺寸,只改变其通道数,从48x27x27变成128x27x27,然后进行最大池化操作从128x27x27变成128x13x13

3 然后两个feature map进行融合,然后继续分成两个,每一个的尺寸从 128x13x13变成 256x13x13,然后分别再进行3x3卷积,也不改变feature map的尺寸,只改变其通道数,从256x13x13 变成 192x13x13

4 两个分别进行两次卷积,不改变feature map的尺寸,只改变其通道数,最后从192x13x13变成128x13x13,然后再进行一次最大池化操作128x13x13变成128x6x6

5 然后合并进行全连接线性转换,再分成两个,具体不用讲了,看图可知

下面就是具体操作,其中下面两个11x11是分成了两个,然后后面其他的操作都一样所以放一块了直接写,合并里面并没有写

其中,还有一个东西没有写,局部响应归一化

Local Response Normalization(LRN, 局部响应归一化), 主要是对ReLU激活函数的输出进行局部归一化操作(和LN差不多),我觉得知道作用就行
LRN归一化: 对局部神经元的活动创建了竞争机制, 使得其中响应比较大的值变得相对更大,并抑制其它反馈较小的神经元, 增强了模型的泛化能力。 本质上, LRN是仿造生物学上活跃的神经元对于相邻神经元的抑制现象 (侧抑制) 。

2 ZFNet

基于AlexNet进行微调 ,修改窗口大小和步长 ,使用稠密单GPU的网络结构替换AlexNet的稀疏双GPU结构,如下图:
网络结构跟AlexNet类似,就是变成了从AlexNet的两个GPU变成了一个GPU的结构,更加容易理解和复现,具体代码复现:
import torch
import torch.nn as nnclass ZFNet(nn.Module):def __init__(self):super(ZFNet, self).__init__()self.features = nn.Sequential(nn.Conv2d(in_channels=3, out_channels=96, kernel_size=(7, 7), stride=(2, 2), padding=1),nn.ReLU(),nn.LocalResponseNorm(size=30),nn.MaxPool2d(kernel_size=(3, 3), stride=(2, 2), padding=1),nn.Conv2d(in_channels=96, out_channels=256, kernel_size=(5, 5), stride=(2, 2), padding=0),nn.ReLU(),nn.LocalResponseNorm(size=50),nn.MaxPool2d(kernel_size=(3, 3), stride=(2, 2), padding=1),nn.Conv2d(256, 384, kernel_size=(3, 3), stride=(1, 1), padding='same'),nn.ReLU(),nn.Conv2d(384, 384, kernel_size=(3, 3), stride=(1, 1), padding='same'),nn.ReLU(),nn.Conv2d(384, 256, kernel_size=(3, 3), stride=(1, 1), padding='same'),nn.ReLU(),nn.MaxPool2d(kernel_size=(3, 3), stride=(2, 2)))self.classify = nn.Sequential(nn.Linear(6 * 6 * 256, 4096),nn.ReLU(),nn.Linear(4096, 4096),nn.ReLU(),nn.Linear(4096, 1000))def forward(self, x):""":param x: 原始图像数据, [N,1,224,224]:return:"""z = self.features(x)  # [N,1,224,224] -> [N,256,6,6]z = z.view(-1, 256 * 6 * 6)  # reshapez = self.classify(z)return zif __name__ == '__main__':net = ZFNet()img = torch.randn(2, 3, 224, 224)scores = net(img)print(scores)probs = torch.softmax(scores, dim=1)  # 求解概率值print(probs)

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

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

相关文章

02-opencv-上

机器视觉概述 机器视觉是人工智能正在快速发展的一个分支。简单说来,机器视觉就是用机器代替人眼来做测量和判断。机器视觉系统是通过机器视觉产品(即图像摄取装置,分CMOS和CCD两种)将被摄取目标转换成图像信号,传送给专用的图像处理系统&…

CAN相关寄存器

1. CAN_ MCR:CAN主控制寄存器。主要负责CAN工作模式的配置。 CAN_BTR:位时序寄存器。用来设置分频/TBs1/TBs2/Tsw等参数,设置测试模式。 CAN_(T/R)IxR:标识符寄存器。存放(待发送/接收)的报文ID、扩展ID、IDE位及RTR…

Dockerfile简介和基础实践

文章目录 1、Dockerfile简介1.1、Dockerfile解决的问题1.2、docker build 构建流程1.3、关键字介绍 2、Dockerfile 实践2.1、基本语法实践 --- golang2.1.1 问题检查 2.2、基本语法实践 --- gcc 总结 1、Dockerfile简介 Dockerfile是一个创建镜像所有命令的文本文件, 包含了一…

CIFAR-10数据集详析:使用卷积神经网络训练图像分类模型

1.数据集介绍 CIFAR-10 数据集由 10 个类的 60000 张 32x32 彩色图像组成,每类 6000 张图像。有 50000 张训练图像和 10000 张测试图像。 数据集分为5个训练批次和1个测试批次,每个批次有10000张图像。测试批次正好包含从每个类中随机选择的 1000 张图像…

HTTP和Tomcat概述

1,Web概述 1.1 Web和JavaWeb的概念 Web是全球广域网,也称为万维网(www),能够通过浏览器访问的网站。 在我们日常的生活中,经常会使用浏览器去访问百度、京东、传智官网等这些网站,这些网站统称为Web网站。如下就是通…

使用ffmpeg转换索尼老DV拍摄的VOB文件为mp4

一些背景故事 最近对象想用 CCD 拍照录像,家里刚好有一台快 20 年前的索尼 DV DCR-DVD653E,就是电池老化充不进去电了。 翻出来之后还感慨了一下:当年没有网购,价格不透明;有些地方也没有官方店,只有一两家…

nginx反向代理负载均衡

一,kali作为负载服务器 打开kali nginx服务,访问页面如下 使用docker拉取nginx,并做出端口映射 ┌──(root?kali)-[/etc/nginx] └─# docker pull nginx ┌──(root㉿kali)-[/etc/nginx] └─# docker run -p 11111:80 --name Jdr -d ng…

【揭秘】ForkJoinTask全面解析

内容摘要 ForkJoinTask的显著优点在于其高效的并行处理能力,它能够将复杂任务拆分成多个子任务,并利用多核处理器同时执行,从而显著提升计算性能,此外,ForkJoinTask还提供了简洁的API和强大的任务管理机制&#xff0c…

VR拍摄+制作

1.VR制作需要的图片宽高是2:1,需要360✖️180的图片,拍摄设备主要有两种: 1)通过鱼眼相机拍摄,拍摄一组图片,然后通过PTGui来合成(拍摄复杂) 2)全景相机,一键拍摄直接就能合成需要的…

C++数据结构——哈希表

目录 一,unordered系列容器 1.1 关于unordered系列 1.2 unordered_set 1.4 unordered_map 1.5 性能对比 二,哈希 2.1 哈希概念 2.2 常用哈希函数 2.3 哈希冲突及解决 2.3.1 闭散列 2.3.2 开散列 2.4 哈希表扩容 2.4.1 闭散列扩容 2.4.2 开散…

贝拉国际医疗 | 赋能升级生态链,共创健康新格局

中国60岁及以上人口已达全国21.1%,衰老相关疾病正逐年攀升成为重大医疗挑战。人体细胞、组织及器官衰老造成各种疾病,例如:心血管病、糖尿病、骨关节疾病、组织纤维化、神经退行性疾病及各种老年病等。 为了推动健康中国建设,提升…

了解维特比算法:通信系统和自然语言处理中解码的基石

一、介绍 在数字通信和信号处理领域,维特比算法是一种革命性的纠错和解码方法。该算法以 1967 年推出的 Andrew Viterbi 的名字命名,已成为数字通信和自然语言处理领域的基础。本文旨在深入研究维特比算法的复杂性,探讨其理论基础、实际应用以…