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…...
COMSOL单相变压器三维温度场模型:揭秘热点温度与流体流速分布
comsol单相变压器温度场三维模型,可以得到变压器热点温度,流体流速分布 搞变压器温度场仿真最头疼的就是三维流固耦合。去年做配电变压器温升项目时,硬是跟COMSOL死磕了两周才摸到门道。今天给大家分享下怎么用非等温流接口抓取热点温度和油…...
Linux RT 调度器的 preempt_count:RT 任务的抢占控制
前言在工业控制、车载自动驾驶、5G 基站基带处理等强实时场景中,Linux RT 调度器的确定性直接决定系统能否在微秒级时限内完成关键任务。preempt_count作为 RT 抢占控制的核心计数器,既保证临界区数据安全不被打断,又严格遵循 “高优先级 RT …...
nli-MiniLM2-L6-H768实操手册:处理法律合同条款蕴含关系的端到端工作流
nli-MiniLM2-L6-H768实操手册:处理法律合同条款蕴含关系的端到端工作流 1. 模型简介 nli-MiniLM2-L6-H768是一个专为自然语言推理(NLI)与零样本分类设计的轻量级交叉编码器(Cross-Encoder)模型。它在保持接近BERT-base精度的同时,通过6层768维的结构设…...
如何3分钟掌握智能马赛克处理:DeepMosaics完整实战指南
如何3分钟掌握智能马赛克处理:DeepMosaics完整实战指南 【免费下载链接】DeepMosaics Automatically remove the mosaics in images and videos, or add mosaics to them. 项目地址: https://gitcode.com/gh_mirrors/de/DeepMosaics 想要轻松为图片视频添加马…...
大数据中心架构、大数据存储、数据中心基础设施建设和运维方案:大数据平台建设、 数据标准化、主题库建设、云计算架构、大数据处理...
该方案围绕大数据中心建设,提出基于云计算与大数据的融合架构,采用模块化基础设施、分布式存储与智能运维体系,实现高可靠、易扩展、安全合规的集中化数据管理与服务支撑,适用于教育等行业的信息化升级。该方案是一套完整、系统、…...
AVM环视拼接效果总不满意?可能是鸟瞰图微调没做好(附Blender可视化调整实战)
AVM环视拼接效果优化:鸟瞰图微调与Blender可视化实战 环视监控系统(AVM)已成为现代智能汽车的标配功能,但许多工程师在完成基础拼接后常遇到一个尴尬局面——系统"能用"却不够"好用"。鸟瞰图视角生硬、拼接缝…...
物联网AI MicroPython传感器实战 之 TEA5767 FM收音机模块驱动与智能场景应用
1. TEA5767 FM收音机模块初探 第一次拿到TEA5767这个小玩意儿时,我差点以为是个U盘——30mm见方的黑色模块,就比硬币大一圈。但别小看它,这可是能让你用MicroPython玩转FM广播的神器。作为一款数字调谐收音机芯片,TEA5767最大的特…...
别再凭感觉调色了!手把手教你用Imatest和24色卡搞定摄像头色彩还原测试
别再凭感觉调色了!手把手教你用Imatest和24色卡搞定摄像头色彩还原测试 在摄像头模组开发与测试中,色彩还原能力是衡量图像质量的核心指标之一。许多工程师习惯依赖主观视觉判断,但人眼对色彩的感知存在个体差异,且易受环境光线和…...
告别STM32开发板!手把手教你用Vivado在Zynq FPGA上“复刻”一个Cortex-M3软核
从STM32到Zynq FPGA:构建自定义Cortex-M3软核的实战指南 对于习惯了STM32开发环境的嵌入式工程师来说,FPGA世界可能像是一片未知的领域。但当你发现手头的项目需要定制外设、特殊总线架构或硬件加速模块时,传统MCU的固定架构就会显得捉襟见肘…...
用Python玩转相控阵天线:稀布阵列与稀疏阵列的实战代码与效果对比
用Python玩转相控阵天线:稀布阵列与稀疏阵列的实战代码与效果对比 相控阵天线技术正从军工领域加速渗透至5G通信和卫星互联网等民用场景。与传统机械扫描天线相比,相控阵通过电子控制波束指向的特性,使其在响应速度和多目标追踪能力上具有革…...
