matlab从pytorch中导入LeNet-5网络框架
文章目录
- 一、Pytorch的LeNet-5网络准备
- 二、保存用于导入matlab的model
- 三、导入matlab
- 四、用matlab训练这个导入的网络
这里演示从pytorch的LeNet-5网络导入到matlab中进行训练用。
一、Pytorch的LeNet-5网络准备
根据LeNet-5的结构图,我们可以写如下结构
import torch
import torch.nn as nnclass LeNet5(nn.Module):def __init__(self, num_classes=10):super(LeNet5, self).__init__()self.feature_extractor = nn.Sequential(# C1: Conv(1→6), 输出 28x28 → 6x28x28nn.Conv2d(in_channels=1, out_channels=6, kernel_size=5, padding=2),nn.BatchNorm2d(6),nn.ReLU(inplace=True),# S2: MaxPool 2x2, 输出 6x14x14nn.MaxPool2d(kernel_size=2, stride=2),# C3: Conv(6→16), 输出 16x10x10nn.Conv2d(in_channels=6, out_channels=16, kernel_size=5),nn.BatchNorm2d(16),nn.ReLU(inplace=True),# S4: MaxPool 2x2, 输出 16x5x5nn.MaxPool2d(kernel_size=2, stride=2),# C5: Conv(16→120), 输出 120x1x1(接近 flatten)nn.Conv2d(in_channels=16, out_channels=120, kernel_size=5),nn.BatchNorm2d(120),nn.ReLU(inplace=True))self.classifier = nn.Sequential(nn.Flatten(), # [batch, 120]nn.Linear(120, 84),nn.BatchNorm1d(84),nn.ReLU(inplace=True),nn.Dropout(0.5),nn.Linear(84, num_classes))def forward(self, x):x = self.feature_extractor(x)x = self.classifier(x)return xif __name__ == "__main__":model = LeNet5()model.eval()# 示例输入:MNIST 的图像大小 [1, 1, 28, 28]example_input = torch.randn(1, 1, 28, 28)# Tracingtraced_model = torch.jit.trace(model, example_input)# 保存traced_model.save("traced_lenet5.pt")print("✅ traced_lenet5.pt 已成功保存!")
二、保存用于导入matlab的model
在上面的代码中,我们有几行是产生trace model的,即
torch.jit.trace()
是 PyTorch 的一种 静态图(Static Graph)转换方法,它会:
- 运行一次前向传播(forward),记录下所有的张量操作;
- 然后构建一个不可变的计算图(graph),这个图就是所谓的 trace model。
保存这个model后,我们就得到了traced_lenet5.pt这个文件。
三、导入matlab
导入matlab可以通过APPS里的Deep Network Designer,如下图
然后通过From PyTorch这个地方,导入刚才保存的网络结构
点开From PyTorch后, 我们可以复制刚才保存的traced_lenet5.pt这个文件的绝对路径用于导入,如下图
然后,import就会有,如下结果
然后,点击红色方框那部分,进行一下输入尺寸的修改
导入的这个网络框架,我们还要在末尾段加入softmax层,这个层在原pytorch框架里没写
这样,我们就完成了LeNet5从Pytorch里导入到matlab了。接着我们可以通过Analyze按钮分析这个网络,如下图
没有问题后,我们就可以Export这个网络到工作区了,输出的网络自动命名为net_1。
四、用matlab训练这个导入的网络
训练的代码如下
% 创建一个图像数据存储对象 `imds`,用于从名为 "DigitsData" 的文件夹中加载图像数据
imds = imageDatastore("DigitsData", ...IncludeSubfolders=true, ... % 指定在加载数据时包含子文件夹中的图像LabelSource="foldernames"); % 使用子文件夹的名称作为图像的标签(自动分类)% 获取数据集中所有的类别名称(即文件夹名),并将其存储在变量 classNames 中
classNames = categories(imds.Labels); % 将 imds.Labels%%
% 使用 splitEachLabel 函数将原始图像数据集 imds 随机划分为训练集、验证集和测试集
[imdsTrain, imdsValidation, imdsTest] = splitEachLabel(imds, 0.7, 0.15, 0.15, "randomized");% 设置用于网络训练的选项,这里使用的是随机梯度下降动量法(SGDM)
% 最大训练轮数(epoch):训练过程中将整个训练集完整迭代 4 次
% 指定验证数据集,用于在训练过程中评估模型的泛化能力
% 每训练 30 个 mini-batch 执行一次验证评估
% 在训练过程中显示实时图形界面,包括损失值和准确率的变化曲线
% 指定训练期间关注的评估指标为准确率(accuracy)
% 禁止在命令行窗口输出详细训练信息(安静模式)
options = trainingOptions("sgdm", ... MaxEpochs = 4, ... ValidationData = imdsValidation, ... ValidationFrequency = 30, ... Plots = "training-progress", ... Metrics = "accuracy", ... Verbose = false); % 使用 trainnet 函数对神经网络进行训练
net = trainnet(imdsTrain, net_1, "crossentropy", options);%%
% 使用 testnet 函数对训练好的神经网络进行验证,并评估其准确率
accuracy = testnet(net, imdsTest, "accuracy");%%
% 对测试集进行批量预测,输出每个图像对应的类别得分(概率)
scores = minibatchpredict(net, imdsTest);% 将得分(scores)转换为类别标签,使用 classNames 映射到原始类名
YTest = scores2label(scores, classNames);% 获取测试集图像的总数量
numTestObservations = numel(imdsTest.Files);% 从测试集中随机选取 9 个样本用于可视化
idx = randi(numTestObservations, 9, 1);% 创建一个新的图形窗口
figure
tiledlayout("flow") % 使用自动流式布局排列子图(tiled layout)% 遍历 9 张图像,显示图像并在标题中标注预测类别
for i = 1:9nexttile % 在下一个网格位置准备绘图img = readimage(imdsTest, idx(i)); % 读取第 idx(i) 张图像imshow(img) % 显示图像title("Predicted Class: " + string(YTest(idx(i)))) % 设置标题,显示预测类别
end
上面用到的数据集是0-9的数字图片,如下图
训练的详细信息如下
预测结果显示
相关文章:
matlab从pytorch中导入LeNet-5网络框架
文章目录 一、Pytorch的LeNet-5网络准备二、保存用于导入matlab的model三、导入matlab四、用matlab训练这个导入的网络 这里演示从pytorch的LeNet-5网络导入到matlab中进行训练用。 一、Pytorch的LeNet-5网络准备 根据LeNet-5的结构图,我们可以写如下结构 import…...
网络:华为HCIA学习笔记:ICMP协议
ICMP(Internet Control Message Protocol)Internet控制消息协议 前言ICMPICMP重定向ICMP差错监测ICMP错误报告ICMP数据包格式ICMP消息类型和编码类型ICMP应用-PingICMP应用-Tracert 总结 前言 Internet控制消息协议ICMP (Internet Control Message Prot…...
导出为更清楚/高质量的图片(.png) | 在Word里面的visio图)
Visio | 将(.vsdx)导出为更清楚/高质量的图片(.png) | 在Word里面的visio图
此时大家在用Visio画完图直接复制到word里面后,如果后期需要重新保存高清图片,但是此时图片在word,是不是很多人会选择直接crtlA截图复制,这样出来的图又不清晰又小,完全不符合你导的审美,接下来跟着我&…...
算法设计学习8
实验目的及要求: 通过深入学习树(Tree)和二叉树(Binary Tree)这两种重要的数据结构,掌握它们的基本概念、性质和操作,提高对树形结构的理解和应用能力。通过本实验,学生将深化对树和…...
Dive into Deep Learning - 2.4. Calculus (微积分)
Dive into Deep Learning - 2.4. Calculus {微积分} 1. Derivatives and Differentiation (导数和微分)1.1. Visualization Utilities 2. Chain Rule (链式法则)3. DiscussionReferences 2.4. Calculus https://d2l.ai/chapter_preliminaries/calculus.html For a long time, …...
kotlin中const 和val的区别
在 Kotlin 中,const 和 val 都是用来声明常量的,但它们的使用场景和功能有所不同: 1. val: val 用于声明只读变量,也就是不可修改的变量(类似于 Java 中的 final 变量)。它可以是任何类型,包括…...
Webpack中loader的作用。
文章目录 前言1. 处理样式文件2. 处理 JavaScript 文件3. 处理其他文件总结 前言 在 Webpack 中,Loader 是用于对模块的源代码进行转换的工具,它能够将不同类型的文件(如 CSS、图片、字体、TypeScript 等)转换为有效的 JavaScrip…...
C++ 极简常用内容
C 极简常用内容 1. 类与对象 定义:封装数据(成员变量)和行为(成员函数)的自定义类型。 Demo: class Car { public:string brand;void drive() { cout << brand << " is moving." …...
如何在windows 环境、且没有显卡的情况下用python跑通从ModelScope下载的大模型的调用
文章目录 背景介绍源代码:安装调试过程1.设置第三方镜像源2.预先安装:3.在python中创建代码:4.最终修改程序,将device_map从“cuda”改成“auto”,大模型调用1.5B(1___5B)的5.最终跑出结果解释:示例&#x…...
MINIQMT学习课程Day10
开始获取股票数据课程的学习: 获取qmt账号的持仓情况后,我们进入下一步,如何获得当前账号的委托状况 还是之前的步骤,打开qmt,选择独立交易, 之后使用pycharm,编写py文件 导入包:…...
如何彻底关闭Windows 10中的Xbox游戏栏
一、打工人的困扰:不速之客“Game Bar” 在日常工作中,许多使用Windows 10的用户常常被一个不起眼却频频打扰的系统功能困扰,那就是“Xbox游戏栏”(Game Bar)。当你正在专注处理紧急的Excel表格或准备PPT汇报…...
26考研资料分享考研资料合集 百度网盘(仅供参考学习)
考研资料分享考研资料合集 百度网盘(仅供参考学习) 通过网盘分享的文件:2026考研英语数学政治最新等3个文件 链接1: https://pan.baidu.com/s/1JXBI9ROng4KAWHoaUHpkug?pwdjydb 提取码: jydb 链接2:https://pan.baidu.com/s/1a…...
59.基于ssm和vue学生考试成绩管理系统
目录 1.系统的受众说明 2.系统关键技术 2.1 java技术 2.2 MYSQL数据库 2.3 B/S结构 3.系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2经济可行性 3.2 系统性能分析 3.3 系统功能分析 3.5系统流程分析 3.5.1登录流程 3.5.2注册流程 3.5.3添加信息流程 3.5.4删…...
常见的ETL工具分类整理
一、开源ETL工具 Kettle(Pentaho Data Integration)--Spoon 设计及架构:面向数据仓库建模的传统ETL工具。使用方式:C/S客户端模式,开发和生产环境需要独立部署,任务编写、调试、修改都在本地。底层架构…...
【leetcode100】数组中的第K个最大元素
1、题目描述 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入: [3,2,…...
markdown语法学习
三化markdown语法 研究对象系统化全局化结构化markdown语法富文本字体样式*斜体*,主题样式#,表格样式||,代码块样式,待办样式- [ ]样式之间互相协作,互不冲突 待办 斜体 加粗 标题 删除线 public class{ //代码块 …...
Linux_4
开始学习ssh工具 在做开发的时候,肯定不止一台服务器,那么假设每台服务器都是Linux服务器,要在服务器上操作就需要登入终端,即Terminal。ssh的作用就是可以通过一个服务器登陆上其他的服务器。 登陆到哪个服务器看到的就是哪个服务器的终端terminal。 ssh登陆 ssh user@…...
Netty——连接超时 与 断开重连
文章目录 1. 处理连接超时和断开重连的原因2. 处理连接超时和断开重连的方法2.1 处理连接超时2.1.1 步骤一:配置连接超时时间2.1.2 步骤二:监听连接结果 2.2 处理断开重连2.2.1 步骤一:监听连接断开事件2.2.2 步骤二:实现重连逻辑…...
linux 进程/线程设置核亲和性
1,线程绑定内核 #include <pthread.h> #include <stdio.h> #include <stdlib.h> // 定义一个函数,用于设置线程的CPU亲和性 void set_thread_affinity(pthread_t thread, int cpu_id) { cpu_set_t cpuset; int s; // 清空CPU集…...
前端页面鼠标移动监控(鼠标运动、鼠标监控)鼠标节流处理、throttle、限制触发频率(setTimeout、clearInterval)
文章目录 使用lodashjs库手动实现节流(通过判断之前设定的定时器setTimeout是否存在) 使用lodashjs库 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Com…...
【MySQL基础-21】MySQL事务机制详解:原理、实现与最佳实践
在现代数据库系统中,事务机制是确保数据一致性和完整性的核心技术。MySQL作为最流行的开源关系型数据库之一,其事务实现机制对于开发者而言至关重要。本文将深入探讨MySQL的事务机制,包括核心概念、实现原理、隔离级别以及实际应用中的最佳实…...
Transformer+BO-SVM时间序列预测(Matlab)
TransformerBO-SVM时间序列预测(Matlab) 目录 TransformerBO-SVM时间序列预测(Matlab)效果一览基本介绍程序设计参考资料 效果一览 基本介绍 普通的单变量时序已经用腻了,审稿人也看烦了,本期推出一期高创…...
Python循环控制语句
1. 循环类型概述 Python提供两种主要的循环结构: while循环 - 在条件为真时重复执行for循环 - 遍历序列中的元素 2. while循环 基本语法 while 条件表达式:循环体代码示例 count 0 while count < 5:print(f"这是第{count1}次循环")count 13. f…...
4.4日西南竞篮,欧篮联,NBA,全扫盘
欧篮联扫盘 301奥林匹亚 vs 阿尔巴 (11.5),总分167.5:阿尔巴有伤病,点差11.5大,可能是接近比赛,总分较低,预测阿尔巴赢盘,总分低于167.5。 302埃菲斯 vs 贝红星 (-1.5)&a…...
面试可能会遇到的问题回答(嵌入式软件开发部分)
写在前面: 博主也是刚入社会的小牛马,如果下面有写的不好或者写错的地方欢迎大家指出~ 一、四大件基础知识 1、计算机组成原理 (1)简单介绍一下中断是什么。 ①回答: ②难度系数:★★ ③难点分析&…...
AI平台初步规划实现和想法
要实现一个类似Coze的工作流搭建引擎,可以结合SmartEngine作为后端工作流引擎,ReactFlow作为前端流程图渲染工具,以及Ant Design作为UI组件库。以下是实现的步骤和关键点: ### 1. 后端工作流引擎(SmartEngine…...
软件工程面试题(二十七)
1、j a v a 对象初始化顺序 1.类的初始化(initialization class & interface) 2.对象的创建(creation of new class instances) 顺序:应为类的加载肯定是第一步的,所以类的初始化在前。大体的初始化顺序是: 类初始化 -> 子类构造函数 -> 父类构造函数 -&g…...
CCF GESP C++编程 六级认证真题 2025年3月
C 六级 2025 年 03 月 题号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 答案 D B A B B B B A A A A A B C A 一、单选题 第 1 题 在面向对象编程中,类是一种重要的概念。下面关于类的描述中,不正确的是( )。 A. 类是一个抽象的概念&a…...
Cortex-M 上编写汇编函数
在 ARM Cortex-M 系列单片机中使用汇编语言编写函数时,需要特别注意寄存器的使用、栈管理、调用约定以及与 C 语言的兼容性。以下是关键注意事项和示例说明: 1. 遵循 AAPCS 调用约定 ARM 定义了 AAPCS(ARM Architecture Procedure Call Standard),规定了函数调用时寄存器…...
Spring 核心技术解析【纯干货版】- XXII:Spring 扫描效率提升模块 Spring-Context-Indexer 模块精讲
在 Spring 应用 中,组件扫描(Component Scan) 是 Spring 容器启动时的关键任务之一。默认情况下,Spring 通过 反射扫描整个类路径 来找到所有 Component、Service、Repository 等注解的类,并将其注册为 Spring Bean。但…...
jetson AGX orin--ARM64 换源报错Packages 404 Not Found [IP: 2402:f000:1:400::2 443]
问题 原因: ARM64结构不能使用X86结构的源,清华源不完全支持ARM64。使用下面这个源 sudo vim /etc/apt/sources.list 删掉原来的,改成这个 # ARM64 架构专用源 deb [archarm64] http://ports.ubuntu.com/ubuntu-ports focal main restrict…...
对备忘录模式的理解
对备忘录模式的理解 一、场景1、题目【[来源](https://kamacoder.com/problempage.php?pid1095)】1.1 题目描述1.2 输入描述1.3 输出描述1.4 输入示例1.5 输出示例 2、理解需求 二、不采用备忘录设计模式1、代码2、问题3、错误的备忘录模式 三、采用备忘录设计模式1、代码1.1 …...
ngx_ssl_init
定义在 src\event\ngx_event_openssl.c ngx_int_t ngx_ssl_init(ngx_log_t *log) { #if OPENSSL_VERSION_NUMBER > 0x10100003Lif (OPENSSL_init_ssl(OPENSSL_INIT_LOAD_CONFIG, NULL) 0) {ngx_ssl_error(NGX_LOG_ALERT, log, 0, "OPENSSL_init_ssl() failed")…...
Roo Code(前身为 Roo Cline)一个 AI 驱动的自主编码代理
Roo Code(前身为 Roo Cline) Roo Code 是一个 AI 驱动的自主编码代理,它存在于您的编辑器中。它可以: 用自然语言沟通直接在您的工作区读写文件运行终端命令自动化浏览器操作与任何 OpenAI 兼容或自定义的 API/模型集成通过自定…...
每日一题洛谷P8649 [蓝桥杯 2017 省 B] k 倍区间c++
P8649 [蓝桥杯 2017 省 B] k 倍区间 - 洛谷 (luogu.com.cn) #include <iostream> #include <vector> using namespace std; #define int long long signed main() {int n, k;cin >> n >> k;vector<int> a(n 1);vector<int> sum(n 1);vec…...
CLion安装、配置及使用
目录 1 CLion是什么 2 CLion安装 3 系统环境变量配置 4 CLion配置 4.1 编辑器选择 4.2 编辑器配置 4.3 新建项目 5 总结 1 CLion是什么 CLion 是 JetBrains 推出的一款跨平台集成开发环境(IDE),专为 C 和 C 开发设计,支…...
UE5把动画导出为视频格式
UE5把动画导出为视频格式 步骤一 点击渲染视频或图片按钮旁边的三个圆点按钮 步骤二 点击渲染视频或图片按钮 步骤三 1是修改输出视频的帧率格式 2输出视频的路径 3点击等待视频渲染完成 以上是基本方法 最新的输出视频方法请看这位大佬的视频...
SQL语句(三)—— DQL
目录 基本语法 一、基础查询 1、查询多个字段 2、字段设置别名 3、去除重复记录 4、示例代码 二、条件查询 1、语法 2、条件列表常用的运算符 3、示例代码 三、分组查询 (一)聚合函数 1、介绍 2、常见的聚合函数 3、语法 4、示例代码 &…...
[2017][note]基于空间交叉相位调制的两个连续波在few layer铋Bi中的全光switch——
前言 类型 太赫兹 + 全光开关 太赫兹 + 全光开关 太赫兹+全光开关 期刊 A C S P H O T O N...
第十九节课: python第四周课程:程序分支结构详解
程序分支结构 1. 单分支结构 语法结构: if <条件>:<代码块>执行逻辑: 条件为真时执行代码块类似自然语言中的"如果…则…" 应用案例: # 猜数字示例 guess eval(input("请输入数字:")) if …...
NSSCTF [HGAME 2023 week1]simple_shellcode
3488.[HGAME 2023 week1]simple_shellcode 手写read函数shellcode和orw [HGAME 2023 week1]simple_shellcode (1) motalymotaly-VMware-Virtual-Platform:~/桌面$ file vuln vuln: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpret…...
图形渲染中的定点数和浮点数
三种API的NDC区别 NDC全称,Normalized Device Coordinates Metal、Vulkan、OpenGL的区别如下: featureOpenGL NDCMetal NDCVulkan NDC坐标系右手左手右手z值范围[-1,1][0,1][0,1]xy视口范围[-1,1][-1,1][-1,1] GPU渲染的定点数和浮点数 定点数类型&a…...
报考高校辅导员需要具备哪些条件?
报考高校辅导员通常需要具备以下条件: 基本条件 国籍与政治面貌:具有中华人民共和国国籍,一般要求是中共党员(含预备党员)。道德品质:遵守宪法和法律,具有良好的品行,作风正派&…...
什么是Stop The World
深入解析Stop-The-World(STW):JVM垃圾回收的"世界暂停"现象 1. 什么是Stop-The-World(STW)? Stop-The-World(STW) 是JVM在执行垃圾回收(GC)时的一…...
Promise 详细说明、常用方法
Promise 详细说明 上一节:认识 Promise 1. 常用的几种方法 1.1 resolve 方法 resolve 方法作用:将一个普通的值转换成 Promise 类型的数据 方法的状态与结果受参数影响: 参数非 Promise 对象,将返回一个 Promise 对象…...
大模型学习四:DeepSeek Janus-Pro 多模态理解和生成模型 本地部署与调用指南
一、说明简介 DeepSeek Janus-Pro是一款先进的多模态理解和生成模型,旨在实现高质量的文本-图像生成与多模态理解。它是由DeepSeek团队研发的,是之前Janus模型的升级版,能够同时处理文本和图像,即可以理解图片内容,…...
康托展开原理
康托展开(Cantor Expansion) 康托展开是一种用于排列唯一编码的方法,可以把一个排列转换成一个整数,并且能够从整数反向解析出原排列。主要用于排列的唯一表示、字典序排名、全排列生成等问题。 1. 康托展开公式 给定一个长度为…...
RESTful如何传递参数
文章目录 前言一、REST 遵循核心原则二、REST 的优点和缺点1.优点2.缺点 三、常见参数传递方式1)路径参数(Path Parameters)2)查询参数(Query Parameters)3)请求体参数(Request Body…...
Java 大视界 -- 基于 Java 的大数据机器学习模型在图像识别中的迁移学习与模型优化(173)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
Pascal语言的贪心算法
贪心算法与Pascal语言 引言 在算法设计与分析中,贪心算法是一类重要的算法策略。它以一种直接而高效的方式解决问题,尤其适合那些可以通过局部最优解推导出全局最优解的问题。在本文中,我们将探讨贪心算法的基本概念、工作原理及其在Pascal…...