当前位置: 首页 > news >正文

用pytorch实现google net

   GoogleNet(也称为Inception v1)是由Google在2014年提出的一个深度卷积神经网络架构。它在ImageNet Large Scale Visual Recognition Challenge (ILSVRC) 2014比赛中取得了优秀的成绩,并引起了广泛的关注。
   GoogleNet的设计目标是构建一个更深的网络架构,以提高准确性,并通过减少网络参数的数量来降低过拟合的风险。它采用了"Inception"模块,其中包含多个并行的卷积层和池化层,这使得网络能够同时捕捉不同尺度的特征。
Inception模块通过使用不同大小的卷积核和池化操作,可以在不同的感受野尺度上提取特征。这样的设计允许网络在不同层级上学习到更具判别力的特征,并且不会对图像进行显式的尺度改变或池化。此外,为了减少计算量和参数数量,Inception模块还引入了1x1卷积核,用于降低通道的维度。
     整个GoogleNet架构包含多个堆叠的Inception模块,并通过使用池化层和丢弃层来减小特征图的尺寸和防止过拟合。最后,全连接层用于输出最终的分类结果。
     GoogleNet的创新点在于其深度和复杂度,并且采用了多个Inception模块的并行组合,使得模型能够同时学习到不同尺度和层次的特征。这使得GoogleNet在图像分类等计算机视觉任务中表现出色,并为后续网络架构的发展提供了启示。

1Inception结构      

在GoogLeNet中,基本的卷积块被称为Inception块(Inception block)。这很可能得名于电影《盗梦空间》(Inception),因为电影中的一句话“我们需要走得更深”(“We need to go deeper”)。引入Inception结构(融入不同尺度的特征信息,即融合不同尺寸的感受野)

 2、使用1x1的卷积核进行降维以及映射处理

 3、整体网络结构

 

import torch
import torch.nn as nn# 定义Inception模块
class InceptionModule(nn.Module):def __init__(self, in_channels, out1x1, reduce3x3, out3x3, reduce5x5, out5x5, out1x1pool):super(InceptionModule, self).__init__()self.branch1 = nn.Sequential(nn.Conv2d(in_channels, out1x1, kernel_size=1),nn.ReLU(inplace=True))self.branch2 = nn.Sequential(nn.Conv2d(in_channels, reduce3x3, kernel_size=1),nn.ReLU(inplace=True),nn.Conv2d(reduce3x3, out3x3, kernel_size=3, padding=1),nn.ReLU(inplace=True))self.branch3 = nn.Sequential(nn.Conv2d(in_channels, reduce5x5, kernel_size=1),nn.ReLU(inplace=True),nn.Conv2d(reduce5x5, out5x5, kernel_size=5, padding=2),nn.ReLU(inplace=True))self.branch4 = nn.Sequential(nn.MaxPool2d(kernel_size=3, stride=1, padding=1),nn.Conv2d(in_channels, out1x1pool, kernel_size=1),nn.ReLU(inplace=True))def forward(self, x):out1 = self.branch1(x)out2 = self.branch2(x)out3 = self.branch3(x)out4 = self.branch4(x)out = torch.cat([out1, out2, out3, out4], 1)return out# 定义GoogLeNet模型
class GoogLeNet(nn.Module):def __init__(self, num_classes=10):super(GoogLeNet, self).__init__()self.conv1 = nn.Sequential(nn.Conv2d(3, 64, kernel_size=7, stride=2, padding=3),nn.ReLU(inplace=True),nn.MaxPool2d(kernel_size=3, stride=2, ceil_mode=True))self.conv2 = nn.Sequential(nn.Conv2d(64, 64, kernel_size=1),nn.ReLU(inplace=True),nn.Conv2d(64, 192, kernel_size=3, padding=1),nn.ReLU(inplace=True),nn.MaxPool2d(kernel_size=3, stride=2, ceil_mode=True))self.inception1 = InceptionModule(192, 64, 96, 128, 16, 32, 32)self.inception2 = InceptionModule(256, 128, 128, 192, 32, 96, 64)self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, ceil_mode=True)self.inception3 = nn.Sequential(InceptionModule(480, 192, 96, 208, 16, 48, 64),InceptionModule(512, 160, 112, 224, 24, 64, 64),InceptionModule(512, 128, 128, 256, 24, 64, 64),InceptionModule(512, 112, 144, 288, 32, 64, 64),InceptionModule(528, 256, 160, 320, 32, 128, 128),nn.MaxPool2d(kernel_size=3, stride=2, ceil_mode=True))self.inception4 = nn.Sequential(InceptionModule(832, 256, 160, 320, 32, 128, 128),InceptionModule(832, 384, 192, 384, 48, 128, 128),nn.AdaptiveAvgPool2d((1, 1)))self.dropout = nn.Dropout(0.4)self.fc = nn.Linear(1024, num_classes)def forward(self, x):out = self.conv1(x)out = self.conv2(out)out = self.inception1(out)out = self.inception2(out)out = self.maxpool(out)out = self.inception3(out)out = self.inception4(out)out = out.view(out.size(0), -1)out = self.dropout(out)out = self.fc(out)return out# 创建GoogLeNet模型实例
model = GoogLeNet()

在上面的代码中,定义了一个 InceptionModule 类,用于创建GoogLeNet中的Inception模块。然后,我们使用这个自定义模块构建了GoogLeNet模型,其中包括多个 InceptionModule 实例作为模型的层。

可以根据需要自定义 InceptionModule 类的参数,例如输入通道数、各个分支的输出通道数和卷积核大小等。同时,你也可以调整 GoogLeNet 类中的层次结构和参数,以适应你的特定任务。

相关文章:

用pytorch实现google net

GoogleNet(也称为Inception v1)是由Google在2014年提出的一个深度卷积神经网络架构。它在ImageNet Large Scale Visual Recognition Challenge (ILSVRC) 2014比赛中取得了优秀的成绩,并引起了广泛的关注。 GoogleNet的设计目标是构建一个更…...

2023-8-15差分矩阵

题目链接&#xff1a;差分矩阵 #include <iostream>using namespace std;const int N 1010;int n, m, q; int a[N][N], b[N][N];void insert(int x1, int y1, int x2, int y2, int c) {b[x1][y1] c;b[x1][y2 1] - c;b[x2 1][y1] - c;b[x2 1][y2 1] c; }int main…...

物理公式分类

(99 封私信 / 81 条消息) 定义式和决定式有什么区别&#xff0c;怎么区分&#xff1f; - 知乎 (zhihu.com) 1、首先&#xff0c;定义一个物理符号&#xff08;物理量&#xff09;来表征物理世界最直观/最基本的物理现象&#xff0c;例如&#xff0c;长度&#xff08;米&#xf…...

vue实现登录注册

目录 一、登录页面 二、注册页面 三、配置路由 一、登录页面 <template><div class"login_container" style"background-color: rgb(243,243,243);height: 93.68vh;background-image: url(https://ts1.cn.mm.bing.net/th/id/R-C.f878c96c4179c501a6…...

SpringBoot复习:(55)在service类中的方法上加上@Transactional注解后,Spring底层是怎么生成代理对象的?

SpringBoot run方法代码如下&#xff1a; 可以看到它会调用refreshContext方法来刷新Spring容器&#xff0c;这个refreshContext方法最终会调用AbstractApplicationContext的refresh方法&#xff0c;代码如下 如上图&#xff0c;refresh方法最终会调用finisheBeanFactoryInit…...

常用的图像校正方法

在数字图像处理中&#xff0c;常用的校正方法包括明场均匀性校正、查找表&#xff08;LUT&#xff09;校正和伽玛&#xff08;Gamma&#xff09;校正。这些校正方法分别针对不同的图像问题&#xff0c;可以改善图像质量&#xff0c;提升图像的可读性和可分析性。下面是这三种校…...

AWS security 培训笔记

云计算的好处 Amazon S3 (Storage) Amazon EC2 (Compute) 上图aws 的几个支柱&#xff1a;安全是其中一个啦 其中安全有几个方面 IAMdetection基础架构保护数据保护应急响应 关于云供应商的责任 data center 原来长这样 &#xff0c;据说非常之隐蔽的 如果有天退役了&#xf…...

设计模式之代理模式(Proxy)的C++实现

1、代理模式的提出 在组件的开发过程中&#xff0c;有些对象由于某种原因&#xff08;比如对象创建的开销很大&#xff0c;或者对象的一些操作需要做安全控制&#xff0c;或者需要进程外的访问等&#xff09;&#xff0c;会使Client使用者在操作这类对象时可能会存在问题&…...

vim 配置环境变量与 JDK 编译器异常

vim 配置环境变量 使用 vim 打开系统中的配置信息&#xff08;不存在将会创建&#xff09;&#xff1a; vim ~/.bash_profile 以配置两个版本 JDK 为例&#xff08;前提是已安装 JDK&#xff09;,使用上述命令打开配置信息&#xff1a; 输入法调成英文&#xff0c;输入 i&…...

TiDB v7.1.0 跨业务系统多租户解决方案

本文介绍了 TiDB 数据库的资源管控技术&#xff0c;并通过业务测试验证了效果。资源管控技术旨在解决多业务共用一个集群时的资源隔离和负载问题&#xff0c;通过资源组概念&#xff0c;可以限制不同业务的计算和 I/O 资源&#xff0c;实现资源隔离和优先级调度&#xff0c;提高…...

【题解】二叉树中和为某一值的路径(一)

二叉树中和为某一值的路径(一) 题目链接&#xff1a;二叉树中和为某一值的路径(一) 解题思路1&#xff1a;递归 我们或许想记录下每一条从根节点到叶子节点的路径&#xff0c;计算出该条路径的和&#xff0c;但此种思路用递归稍麻烦&#xff0c;我们可以试着把和转换为差&am…...

css中变量和使用变量和运算

变量&#xff1a; 语法&#xff1a;--css变量名&#xff1a;值&#xff1b; --view-theme: #1a99fb; css使用变量&#xff1a; 语法&#xff1a;属性名&#xff1a;var( --css变量名 )&#xff1b; color: var(--view-theme); css运算&#xff1a; 语法&#xff1a;属性名…...

数据结构之线性表的类型运用Linear Lists: 数组,栈,队列,链表

线性表 定义 一个最简单&#xff0c;最基本的数据结构。一个线性表由多个相同类型的元素穿在一次&#xff0c;并且每一个元素都一个前驱&#xff08;前一个元素&#xff09;和后继&#xff08;后一个元素&#xff09;。 线性表的类型 常见的类型&#xff1a;数组、栈、队列…...

成瘾机制中微生物群的神秘角色

谷禾健康 成瘾是一种大脑疾病&#xff0c;受害者无法控制地对某种物质或行为产生强烈的依赖和渴求&#xff0c;尽管这种行为会产生有害的后果。成瘾包括一系列物质滥用障碍&#xff0c;例如药物、酒精、香烟&#xff0c;过度饮食。近年来&#xff0c;吸毒成瘾急剧上升&#xff…...

arm安装docker与docker-copose

一、银河麒麟Arm64安装docker 1、docker 安装包地址&#xff1a; https://download.docker.com/linux/static/stable 2、解压&#xff0c;然后将docker目录下文件拷贝到/usr/bin里 tar -xf docker-18.09.3.tgz mv docker/* /usr/bin/ 3、准备 docker.service系统配置文件 &…...

9.文件基本操作

第四章 文件管理 9.文件基本操作 ​    “打开文件和关闭文件”与平常鼠标双击打开文件和点击“X”关闭文件是有所不同的。 ​    操作系统在处理open系统调用时主要做了以下两件事情&#xff0c;①根据我们提供的文件存放路径在外存当中找到这个目录对应的目录表&#x…...

【Java】Spring——Bean对象的作用域和生命周期

文章目录 前言一、引出Bean对象的作用域1.普通变量的作用域2.Bean对象的作用域 二、Bean对象的作用域1.Bean对象的6种作用域2.设置Bean对象的作用域 三、Bean对象的生命周期总结 前言 本人是一个普通程序猿!分享一点自己的见解,如果有错误的地方欢迎各位大佬莅临指导,如果你也…...

数字孪生助力智慧水务:科技创新赋能水资源保护

智慧水务中&#xff0c;数字孪生有着深远的作用&#xff0c;正引领着水资源管理和环境保护的创新变革。随着城市化和工业化的不断推进&#xff0c;水资源的可持续利用和管理愈发显得重要&#xff0c;而数字孪生技术为解决这一挑战提供了独特的解决方案。 数字孪生技术&#xf…...

css 实现文字横向循环滚动

实现效果 思路 ## 直接上代码,html部分 //我这里是用的uniapp <view class"weather_info_wrap"><view class"weather_info">当前多云&#xff0c;今晚8点转晴&#xff0c;明天有雨&#xff0c;温度32摄氏度。</view><view class&qu…...

VuePress 数学公式支持

前言 博主在为 VuePress1.0 博客添加数学公式支持过程中遇到如下问题 问题一 在配置诸如 markdown-it-texmath,markdown-it-katex,markdown-it-mathjax3 这些插件后遇到 Error: Dynamic require of "XXX" is not supported 问题二 配置插件 vuepress-plugin-ma…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...