基于Matlab的BiLSTM实现

2023-11-08

问题背景

目前深度学习多使用python实现。不过想要配置好一个python的深度学习环境有时却并不轻松,常常因为各个第三方库版本兼容性问题而失败。相比之下,matlab仅需一次安装简化了不少工作。这几年matlab的深度学习工具箱也是发展迅速。但我发现matlab的相关资料却比较少。因此,我探索了下如何用matlab搭建一个BiLSTM用于时序遥感数据的分类。

clc,clear;
%% Load the training data
% trainX: an array with shape of (n, c, t). n represents the number
%            of training samples, c is the number of features, t is the
%             length of time sequence.
% trainY: an array with shape of (n,). n represents the number of training
%            samples. 
rootDir = 'root_dir';
trainingData = importdata(fullfile(rootDir,'train.mat'));
trainX = trainingData.trainx;
trainY = trainingData.trainy+1;
Xtrain = cell({});
for i = 1:size(trainX,1)
    Xtrain{i,1} = squeeze(trainX(i,:,:));
end
Ytrain = categorical(trainY');

%% Load the validation data
valData = importdata(fullfile(rootDir,'test.mat'));
valX = valData.testx;
valY = valData.testy+1;
Yval = categorical(valY');
Xval = cell({});
for i = 1:size(valX,1)
    Xval{i,1} = squeeze(valX(i,:,:));
end
valDataSet = cell({Xval,Yval});

%% Create bilstm model
% numFeatures: The number of expected features in input data
% numHiddens: The number of features in the hidden state
% numClasses: The number of classess
numFeatures = 8;
numHiddens = 256;
numClasses = 5;

netLayers = [
    sequenceInputLayer(numFeatures,"Name","input")
    bilstmLayer(numHiddens,"Name","bilstm_1",'OutputMode','last')
    bilstmLayer(numHiddens,"Name","bilstm_2",'OutputMode','last')
    dropoutLayer(0.5,"Name","dropout")
    flattenLayer("Name","flatten")
    fullyConnectedLayer(numClasses,"Name","fc")
    softmaxLayer("Name","softmax")
    classificationLayer("Name","classification")];

%% Set the hyper parameters for unet training 
options = trainingOptions('adam', ...                          
                                        'InitialLearnRate',1e-4, ...    
                                        'Plots','training-progress',...
                                        'MaxEpochs',60, ... 
                                        'MiniBatchSize',128,...
                                        'VerboseFrequency',1,...
                                        'ExecutionEnvironment', 'auto',...
                                        'Shuffle','every-epoch',...
                                         'ValidationData',valDataSet,...
                                         'ValidationFrequency',1,...
                                         'WorkerLoad',4,...
                                         'CheckPointPath',rootDir);
% start training
net = trainNetwork(Xtrain,Ytrain, netLayers, options);

%% Save and load model
save('bilstm.mat','net');
bilstm = importdata('bilstm.mat');

%% Accuracy assessment
pred = classify(bilstm, Xval);
[confusionMatrix,order] = confusionmat(categorical(valY),pred);
cm = confusionchart(confusionMatrix);

% caculate user accuracy and mapping accuracy
confusionMatrix = [confusionMatrix, zeros(size(confusionMatrix,1),1)];
confusionMatrix = [confusionMatrix; zeros(1,size(confusionMatrix,2))];
confusionMatrix(1:end-1,end) = confusionMatrix(sub2ind(size(confusionMatrix),1:numClasses,1:numClasses))...
                                                ./sum(confusionMatrix(1:end-1,1:end-1),2)';
confusionMatrix(end,1:end-1) = confusionMatrix(sub2ind(size(confusionMatrix),1:numClasses,1:numClasses))...
                                                ./sum(confusionMatrix(1:end-1,1:end-1),1);    
confusionMatrix(end,end) = sum(confusionMatrix(sub2ind(size(confusionMatrix),1:numClasses,1:numClasses)))...
                                                ./sum(sum(confusionMatrix(1:end-1,1:end-1)));
                                            
mappingAccuracy = confusionMatrix(end,1:end-1);
userAccuracy = confusionMatrix(1:end-1,end);
totalAccuracy = confusionMatrix(end,end);

分类精度还不错,达到了88.9%

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于Matlab的BiLSTM实现 的相关文章

  • 将 3d 矩阵重塑为 2d 矩阵

    我有一个 3d 矩阵 n by m by t 在 MATLAB 中表示n by m一段时间内网格中的测量值 我想要一个二维矩阵 其中空间信息消失了 只有n m随着时间的推移测量t剩下 即 n m by t 我怎样才能做到这一点 你需要命令r
  • 这是 `min` 和 `nanmin` 之间的区别; Matlab 中的“max”和“nanmax”?

    Matlab描述nanmin and nanmax像这样 NANMIN最小值 忽略NaNs NANMAX最大值 忽略NaNs 但实际上 min and max ignore NaNs too 那我应该使用哪个 根据我的测试 nanmin a
  • 估算缺失数据,同时强制相关系数保持不变

    考虑以下 excel 数据集 m r 2 0 3 3 0 8 4 0 1 3 2 1 5 2 2 3 1 9 2 5 1 2 3 0 2 0 2 6 我的目标是使用以下条件填充缺失值 将上述两列之间的成对相关性表示为 R 大约 0 68 将
  • 整数的十进制表示形式中的分隔数字

    例如 我想将用户输入作为整数输入 45697 并将前两位数字存储在数组 向量或其他内容中 例如 4 5 6 9 7 这样我就可以使用一些函数调用来检查前两个值 4 5 并对它们进行计算 问题 我不知道如何存储恢复前两个值 有没有简单的函数调
  • 傅里叶变换定理 matlab

    我目前正在尝试理解二维傅里叶位移定理 根据我到目前为止所了解到的情况 图像空间中的平移会导致相位差异 但不会导致频率空间中的幅度差异 我试图用一个小例子来演示这一点 但它只适用于行的移位 而不适用于列的移位 这是一个小演示 我只在这里显示幅
  • 在 Matlab 中显示有理数

    我有两个整数 m n 它们一起形成 m n 形式的有理数 现在我只想以这种理性的形式在 Matlab 中显示它们 我可以通过这样做来做到这一点 char sym m n 所以 如果 例如m 1 n 2 Matlab将显示1 2 然而 如果m
  • 在 MATLAB 中创建共享库

    一位研究人员在 MATLAB 中创建了一个小型仿真 我们希望其他人也能使用它 我的计划是进行模拟 清理一些东西并将其变成一组函数 然后我打算将其编译成C库并使用SWIG https en wikipedia org wiki SWIG创建一
  • Matlab Solve():未给出所有解决方案

    我试图找到两条曲线的交点 syms x y g x 20 exp x 30 3 5 1 sol x sol y solve x 22 3097 2 y 16 2497 2 25 y g x x y Real true 它只提供一种解决方案
  • 为什么 MATLAB 本机函数 cov(协方差矩阵计算)使用与我预期不同的除数?

    给定一个 M 维和 N 个样本的数据矩阵数据 例如 data randn N M 我可以计算协方差矩阵 data mu data ones N 1 mean data cov matrix data mu data mu N 如果我使用原生
  • 如何获取MATLAB句柄对象的ID?

    当我尝试使用时出现问题MATLAB 句柄对象 http www mathworks com help techdoc ref handle html作为关键值MATLAB 容器 Map http www mathworks com help
  • MATLAB 可执行文件太慢

    我使用以下命令将 MATLAB 程序转换为基于控制台的应用程序deploytool在 MATLAB 中 MATLAB m文件执行大约需要 2 秒 但在我将其转换为可执行文件并调用 exe 执行需要45秒 太长了 我想将 MATLAB 程序与
  • 将数据提示堆栈放在轴标签顶部,并在轴位置发生更改后更新轴标签

    此问题仅适用于 unix matlab Windows 用户将无法重现该问题 我在尝试创建位于 y 轴标签顶部的数据提示时遇到问题 下图很能说明问题 正如您所看到的 在 ylabel 附近创建的数据提示将到达 ylabel 文本的底部 而期
  • 如何为已编译的 MATLAB 创建安装程序并要求用户接受我们的许可条款?

    我正在 MATLAB 中编写程序分发给 Windows 用户 我使用 MATLAB 编译器和 MATLAB r2014a 版本来创建程序 我可以使用 MATLAB 应用程序编译器创建 Windows 安装程序 并且它的工作效果可以接受 但是
  • 在 matlab 代码中使用 dll 文件

    我需要使用 Matlab 中由 dll 文件定义的函数 我有一个例子 那个家伙将 dll 转换为 mexw32 文件 但我知道我是如何做到这一点的 我尝试使用加载库但它没有创建任何文件 我怎样才能做到这一点 loadlibrary http
  • Matlab 一个图上有多个图例 2014b

    我想在一个地块上有多个传说 该解决方案在 2014b 版本之前完美运行 我试图弄清楚如何使用手柄优雅地制作它 但到目前为止还没有成功 欢迎任何想法 2013b 的示例 x 1 50 y1 sin x 2 y2 cos x 2 f figur
  • 从 MATLAB 调用 Java?

    我想要Matlab程序调用java文件 最好有一个例子 需要考虑三种情况 Java 内置库 也就是说 任何描述的here http docs oracle com javase 6 docs api 这些项目可以直接调用 例如 map ja
  • 命令 A(~A) 在 matlab 中的真正作用是什么

    我一直在寻找找到矩阵非零最小值的最有效方法 并在论坛上找到了这个 设数据为矩阵A A A nan minNonZero min A 这是非常短且高效的 至少在代码行数方面 但我不明白当我们这样做时会发生什么 我找不到任何关于此的文档 因为它
  • MATLAB 编译器与 MATLAB 编码器

    两者有什么区别 据我了解 MATLAB Compiler将MATLAB代码包装成 exe文件 这样就可以在不安装MATLAB的情况下使用它 并且只需要MCR 除此之外 MATLAB Builder NE 还可以用于生成与 Net 框架一起使
  • matlab中无限while嵌套在for循环中

    我想做一个while循环 嵌套在for在 Matlab 中循环以查找数据中不同对之间的距离 我的数据具有以下形式 ID lon lat time 1 33 56 40 89 803 2 32 45 41 03 803 3 35 78 39
  • 禁止 MATLAB 自动获取焦点[重复]

    这个问题在这里已经有答案了 我有以下问题 在我的 MATLAB 代码中 我使用如下语句 figure 1 更改某些数据的目标数字 问题是 在此 MATLAB 之后 系统将焦点集中在具有该图形的窗口上 当我在后台运行一个大脚本并尝试在计算机上

随机推荐

  • 微信小程序防止后退,返回主页,30秒看完关闭

    防止后退 使用 wx redirectTo 代替wx navigateto 关闭返回主页 在onShow function 中调用wx hideHomeButton 讲完收工
  • 国产chatgpt:基于chatGLM微调nlp信息抽取任务

    文章目录 一 传统nlp做信息抽取 二 什么是零样本和少样本 1 零样本和少样本的概念 2 零样本和少样本的应用场景 3 零样本和少样本在大模型时代的优势和意义 4 相比传统NLP 零样本和少样本学习具有以下优势 三 大模型时代信息抽取 c
  • pip 使用国内镜像源及常用命令

    Python pip默认是从pypi org官网下载包 即使用的是国外的镜像源 https pypi python org simple 因此在下载安装包时速度非常慢 还经常出现连接超时 导致下载失败的情况 所以 一般在下载安装包的时候 都
  • 一文解决java.lang.UnsatisfiedLinkError

    首先大家先了解下 ABI和CPU 不同的 Android 手机使用不同的 CPU 而不同的 CPU 支持不同的指令集 CPU 与指令集的每种组合都有专属的应用二进制接口 即 ABI 每个 ABI 支持一个或多个指令集 每个 ABI 支持的指
  • Java语言中的重写(override)和重载(overload)

    Java语言中的重写 override 和重载 overload 重写 override 和重载 overload 是编程语言中的两个常见概念 用于描述函数或方法的特定行为 重写指的是在子类中重新定义 覆盖 父类中已经存在的同名方法 重写可
  • 习题2软件工程

    3 4 1 不是 通常所说的结构化程序 是按照狭义的结构程序的定义衡量 符合定义规定的程序 图示的程序的循环控劇结构有两个出口 显然不符合狭义的结构程序的定义 因此是非结构化的程序 2
  • aspose文档格式转换

    文章目录 Word转Pdf html转pdf pdf转word Word转Pdf public static void main String args throws Exception Document doc new Document
  • pikachu靶场CSRF之TOKEN绕过

    简介 Pikachu靶场中的CSRF漏洞环节里面有一关CSRF TOKEN 这个关卡和其余关卡稍微有点不一样 因为表单里面存在一个刷新就会变化的token 那么这个token是否能绕过呢 接下来我们来仔细分析分析 实战过程 简单尝试 先利用
  • 11月10日 生命值,减少生命值,创建生命值UI UE4斯坦福 学习笔记

    制作角色属性Comp 添加一个Actorcomp 在 h内添加生命值与减少血量的函数 protected 只在蓝图内可以编辑 在编辑器界面不能编辑 UPROPERTY EditDefaultsOnly BlueprintReadOnly C
  • Qt应用开发(基础篇)——颜色选择器 QColorDialog

    一 前言 QColorDialog类继承于QDialog 是一个设计用来选择颜色的对话框部件 对话框窗口 QDialog QColorDialog颜色选择器一般用来让用户选择颜色 比如画图工具中选择画笔的颜色 刷子的颜色等 你可以使用静态函
  • 彻底卸载MySQL8.0

    环境需求 win10 MySQL8 0 彻底卸载 1 停止MySQL服务 启动任务管理器 gt 选择服务 gt 找到MySQL gt 右键停止 如果有多个MySQL服务 也全部都要停掉 2 卸载MySQL相关所有组件 打开看控制面板 gt
  • 使用树莓派进行远程视频转播(内网穿透)

    一 准备材料 实体 树莓派摄像头 树莓派 虚拟 云服务器 二 先测试树莓派进行局域网转播 这里是需要安装的软件 sudo apt get install subversion libjpeg8 dev imagemagick libv4l
  • 线性代数系列讲解第七篇 正交向量及正交空间

    正交向量 orthogonal vector 毕达哥拉斯定理 勾股定理 Pythagoras 我们很容易得出 x 2 y 2 x y 2 x 2 y 2 x y 2 x 2 y 2 x y 2 这就是勾股定理 我们可以将一个向量的模的平方写
  • 服务器改配项目,网络服务器搭建(项目五)[xxxx1214修改].ppt

    网络服务器搭建 项目五 xxxx1214修改 4 查看启动信息 service named restart 如果named服务无法正常启动 可以查看提示信息 根据提示信息更改配置文件 5 查看端口 如果服务正常工作 则会开启TCP和UDP的
  • 自动化测试:python测试结果和报告自动发送邮件

    一 带有附件发送邮件 1 导入模块 MIMEMultipart from email mime multipart import MIMEMultipart 复制 2 先读取要发送文件的内容 file new 是测试报告路径的参数名 3 下
  • Linux 动态库 soname 实践

    xredis 因为项目中使用到了 xredis C 开发的redis客户端 是对hiredis的C 封装 在 makefile 中发现使用到了 Wl soname 这个语法 之前没怎么了解过 特此记录 makefile 节选如下 XREDI
  • LeetCode—200.岛屿数量(Number of Islands)——分析及代码(C++)

    LeetCode 200 岛屿数量 Number of Islands 分析及代码 C 一 题目 二 分析及代码 1 深度优先搜索 1 思路 2 代码 3 结果 三 其他 一 题目 给定一个由 1 陆地 和 0 水 组成的的二维网格 计算岛
  • elementui确认消息区分取消和关闭按钮

    默认情况下 elementui的确认消息 取消按钮和右上角弹窗 走的是同一个方法 也就是catch方法的回调 如果功能上需要做区分 就没法区分了 所以 要解决这个问题 就需要在取消的回调方法里做一个判断 来区分是点击右上角的取消 还是点击的
  • 如何隐藏unity窗口中的变量、如何设置变量范围、在编辑器中如何显示私有变量与Awake、start之间的区别

    什么是脚本 cs的文本文件 类文件 附加到游戏物体中 定义游戏对象行为指令的代码 c 类包括 字段 属性 构造方法 方法 脚本文件包括 字段 方法 不能在脚本文件里写构造方法 一些unity脚本小属性 序列化字段 作用 在编辑器中显示私有变
  • 基于Matlab的BiLSTM实现

    问题背景 目前深度学习多使用python实现 不过想要配置好一个python的深度学习环境有时却并不轻松 常常因为各个第三方库版本兼容性问题而失败 相比之下 matlab仅需一次安装简化了不少工作 这几年matlab的深度学习工具箱也是发展