pytorch搭建squeezenet网络的整套工程(升级版)
上一篇当中,使用pytorch搭建了一个squeezenet,效果还行。但是偶然间发现了一个稍微改动的版本,拿来测试一下发现效果会更好,大概网络结构还是没有变,还是如下的第二个版本:

具体看网络结构代码:
import torch
import torch.nn as nnclass Fire(nn.Module):def __init__(self, in_channel, out_channel, squzee_channel):super().__init__()self.squeeze = nn.Sequential(nn.Conv2d(in_channel, squzee_channel, 1),nn.BatchNorm2d(squzee_channel),nn.ReLU(inplace=True))self.expand_1x1 = nn.Sequential(nn.Conv2d(squzee_channel, int(out_channel / 2), 1),nn.BatchNorm2d(int(out_channel / 2)),nn.ReLU(inplace=True))self.expand_3x3 = nn.Sequential(nn.Conv2d(squzee_channel, int(out_channel / 2), 3, padding=1),nn.BatchNorm2d(int(out_channel / 2)),nn.ReLU(inplace=True))def forward(self, x):x = self.squeeze(x)x = torch.cat([self.expand_1x1(x),self.expand_3x3(x)], 1)return xclass SqueezeNet(nn.Module):"""mobile net with simple bypass"""def __init__(self, class_num=100):super().__init__()self.stem = nn.Sequential(nn.Conv2d(3, 96, 3, padding=1),nn.BatchNorm2d(96),nn.ReLU(inplace=True),nn.MaxPool2d(2, 2))self.fire2 = Fire(96, 128, 16)self.fire3 = Fire(128, 128, 16)self.fire4 = Fire(128, 256, 32)self.fire5 = Fire(256, 256, 32)self.fire6 = Fire(256, 384, 48)self.fire7 = Fire(384, 384, 48)self.fire8 = Fire(384, 512, 64)self.fire9 = Fire(512, 512, 64)self.conv10 = nn.Conv2d(512, class_num, 1)self.avg = nn.AdaptiveAvgPool2d(1)self.maxpool = nn.MaxPool2d(2, 2)def forward(self, x):x = self.stem(x)f2 = self.fire2(x)f3 = self.fire3(f2) + f2f4 = self.fire4(f3)f4 = self.maxpool(f4)f5 = self.fire5(f4) + f4f6 = self.fire6(f5)f7 = self.fire7(f6) + f6f8 = self.fire8(f7)f8 = self.maxpool(f8)f9 = self.fire9(f8)c10 = self.conv10(f9)x = self.avg(c10)# x = x.view(x.size(0), -1)x = torch.flatten(x, start_dim=1)return xdef squeezenet(class_num=100):return SqueezeNet(class_num=class_num)
最大的变化就是在卷积层和relu激活层之间加了个bn层,包括所有的fire结构内。其余就是卷积和池化的kernel_size或stride的微调,包括最后去掉了dropout,以及最后部分的网络结构也稍作调整:

将这个网络结构与上一个的网络结构训练同一训练集,得到的模型测试同一测试集,发现这个模型的准确率会比上一个高几个点。而且上一个模型训练容易不稳定,训练到一半直接梯度爆炸了,需要不断调参也比较麻烦,这个模型lr直接0.1或0.01都能训练很好,所以个人更推荐这个网络模型。
下一篇编辑此网络结构的caffe版本。
相关文章:
pytorch搭建squeezenet网络的整套工程(升级版)
上一篇当中,使用pytorch搭建了一个squeezenet,效果还行。但是偶然间发现了一个稍微改动的版本,拿来测试一下发现效果会更好,大概网络结构还是没有变,还是如下的第二个版本: 具体看网络结构代码:…...
222. 完全二叉树的节点个数
题目链接:222. 完全二叉树的节点个数 需复刷 全代码: class Solution { public:int getnums(TreeNode* Node){if(Node NULL){return 0;}int leftnums getnums(Node ->left);int rightnums getnums(Node ->right);int cns 1 leftnums righ…...
adb and 软件架构笔记
Native Service,这是Android系统里的一种特色,就是通过C或是C代码写出来的,供Java进行远程调用的Remote Service,因为C/C代码生成的是Native代码(机器代码),于是叫Native Service。 native服务…...
算术运算符、自增自减运算符、赋值运算符、关系运算符、逻辑运算符、三元运算符
1.算术运算符 public class OperatorDemo1 {public static void main(String[] args) {int a 10;int b 2;System.out.println(a b);System.out.println(a - b);System.out.println(a * b);System.out.println(a / b);System.out.println(5 / 2);System.out.println(5.0 / 2);…...
k8s 配置资源管理
配置资源管理 //Secret Secret 是用来保存密码、token、密钥等敏感数据的 k8s 资源,这类数据虽然也可以存放在 Pod 或者镜像中,但是放在 Secret 中是为了更方便的控制如何使用数据,并减少暴露的风险。 有三种类型: ●kubernetes.…...
expo + react native项目隐藏状态栏踩坑
我的app.tsx文件内容如下: import MainPage from "./screens/Main/index";export default function App() {return (<MainPage />); }需求:当屏幕方向旋转90度后,状态栏所在位置是处于顶部安全区域所在位置。需要忽略顶部安…...
若依:用sqlite3随便掰饬掰饬
“若依”这个开源项目,感觉是外包公司标配了啊,都在用。从README感觉像是某位阿里员工的工作之余的小整理。对于SprintBoot,个人感觉太重型,不过人家生态起来了,不是那么容易玩完。但是随着VMware被博通收购࿰…...
刚安装的MySQL使用Navicat操作数据库遇到的问题
刚安装的MySQL使用Navicat操作数据库遇到的问题 一、编辑连接保存报错二、打开数据表很慢三、MySQL的进程出现大量“sleep”状态的进程四、执行sql脚本报错,部分表导不进去五、当前MySQL配置文件 一、编辑连接保存报错 连接上了数据库,编辑连接保存报错…...
物奇平台耳机宕机恢复功能实现
是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,群赠送语音信号处理降噪算法,蓝牙音频,DSP音频项目核心开发资料, 物奇平台耳机宕机恢复功能实现 一 需求与场景 1 使…...
前端学习地址_备忘录(随时更新)
前端基础&&体系: MDN:MDN Web Docs 菜鸟教程:菜鸟教程 - 学的不仅是技术,更是梦想! 印记中文:印记中文 - 深入挖掘国外前端新领域,为中国 Web 前端开发人员提供优质文档 w3cschool:w3cschool官网 - 1000多本编程教程免费学 vue系…...
安卓数据恢复工具哪个强? 10 个最佳 Android 数据恢复应用程序
如果您是 Android 用户并且已经使用您的设备一段时间,那么您很可能遇到过与数据相关的问题。这可能是由于软件问题导致文件被意外删除或损坏。许多人不经常备份数据,从而丢失了重要的文档、图像、视频文件等。最糟糕的是,数据丢失可能随时发生…...
在IDEA中配置Web开发环境
一、idea配置Web开发环境 第一步:下载并安装Tomcat服务器(建议放根目录,完整路径中不要出现中文) 第二步:打开IDEA,新建java项目 第三步:为项目添加Web应用 在项目上右键➡️选择“Add Framew…...
Cesium 相机设置
1.setView 直接跳转到目的地 // 设置相机位置 const position Cesium.Cartesian3.fromDegrees(113, 31, 20000); // setView通过定义相机目的地(方向),直接跳转到目的地 viewer.camera.setView({ destination: position, // 位置设置 orientation: { //…...
【虹科干货】TWAMP:什么是双向主动测量协议?
TWAMP(双向主动测量协议)是什么?它在网络性能测量中有什么作用?如果您对IP网络中设备之间的性能问题感兴趣,或者想了解TWAMP与OWAMP之间的区别,以及TWAMP测试的好处。 一、TWAMP是什么? TWAMP代…...
bool型的盲注
bool型的盲注...
聊聊logback的ShutdownHook
序 本文主要研究一下logback的ShutdownHook ShutdownHook ch/qos/logback/core/hook/ShutdownHook.java /*** Interface describing a logback shutdown hook implementation* * author Mike Reinhold*/ public interface ShutdownHook extends Runnable, ContextAware { }…...
【第2章 Node.js基础】2.4 Node.js 全局对象...持续更新
什么是Node.js 全局对象 对于浏览器引擎来说,JavaScript 脚本中的 window 是全局对象,而Node.js程序中的全局对象是 global,所有全局变量(除global本身外)都是global 对象的属性。全局变量和全局对象是所有模块都可以调用的。Node.is 的全局…...
大数据毕业设计选题推荐-河长制大数据监测平台-Hadoop-Spark-Hive
✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…...
Unity与java后端UDP通信
1. unity客户端代码: using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Net.Sockets; using System.Net; using System.Threading; using System.Text; using System;public class Udp : MonoBehaviour {static Sock…...
vue3 - swiper插件 实现PC端的 视频滑动功能(仿抖音短视频)
swiper官网 swiper属性/组件查询 vue中使用swiper 步骤: ① npm install swiper 安装 ② 基础模板: <div><swiper class"swiper-box" :direction"vertical":grabCursor"true" :mousewheel"tr…...
三、vs code快捷键
1.设置Ctrl,2.还原整个窗口布局命令面板 Ctrl Shift P → 输入 View: Reset View Locations → 回车,所有面板回归默认位置。...
如何在 Firebase Storage 中批量获取所有媒体文件的下载链接
本文详解 2023 年 firebase sdk v9 中正确列出并批量获取 storage 中所有媒体文件(如图片)下载 url 的标准方法,涵盖完整代码示例、常见错误分析及生产环境注意事项。 本文详解 2023 年 firebase sdk v9 中正确列出并批量获取 storage 中…...
你的AHT20数据准吗?从原理到代码,详解STM32温湿度采集的校准与数据处理要点
你的AHT20数据准吗?从原理到代码,详解STM32温湿度采集的校准与数据处理要点 在物联网和智能硬件项目中,温湿度传感器是最基础也最关键的感知元件之一。AHT20作为新一代数字温湿度传感器,凭借其高精度、低功耗和小尺寸等优势&#…...
CN3703 5A 三节锂电池充电管理集成电路
概述: CN3703 是 PWM 降压模式三节锂电池充电管理集成电路,独立对三节锂电池充电进行自动管理,具有封装外形小,外围元器件少和使用简单等优点。 CN3703 具有恒流和恒压充电模式,非常适合锂电池的充电。在恒压充电模式,CN3703将电池…...
ElasticSearch 核心:分片策略全解析 + 分片/副本数精准配置实战
ElasticSearch 核心:分片策略全解析 分片/副本数精准配置实战一、前言二、基础概念:ES 分片与副本2.1 核心定义2.2 分片工作流程图三、ElasticSearch 分片策略全解析3.1 策略1:默认哈希路由策略(最常用)3.1.1 原理3.1…...
收藏!20款AI必备工具,小白也能快速上手搭建大模型应用
文章介绍了20款AI产品经理必须掌握的工具,涵盖应用搭建平台(如Dify、Coze)、开发框架(如LangChain)、智能体平台(如Manus、OpenClaw)、AI编程工具(如Bolt.new、Claude Codeÿ…...
告别卡顿!用51单片机PWM差速让你的循迹小车转弯丝滑(附完整代码)
51单片机PWM差速循迹小车:从机械抖动到丝滑转弯的实战指南 第一次尝试制作循迹小车时,最让我抓狂的就是那个"僵尸式转弯"——每次遇到弯道,小车就像被施了定身咒一样,一个轮子突然锁死,另一个轮子拼命挣扎&a…...
VS2015集成Qt项目遭遇MSB4018:平台工具集配置实战解析
1. 当VS2015遇上Qt:MSB4018错误的典型场景 第一次在VS2015里打开Qt项目时,那个鲜红的MSB4018错误提示框跳出来,我整个人都是懵的。控制台里密密麻麻的堆栈信息,最扎眼的就是那句"VCMessage任务意外失败"。这种情况在混合…...
Foundation Magellan 怎么用?
如何创建麦哲伦导航 麦哲伦导航就是一个导航索引,创建方式如下: 实例 <div data-magellan-expedition"fixed"> <dl class"sub-nav"> <dd data-magellan-arrival"page1"><a href"#page1">…...
机器学习中的线性代数:从基础概念到实践应用
1. 线性代数入门:从机器学习视角看数据数学线性代数是现代数据科学和机器学习的基础语言。作为一名从业多年的数据科学家,我经常遇到初学者对线性代数感到畏惧——那些矩阵、向量空间和特征分解的概念看起来抽象又晦涩。但事实上,线性代数的核…...
