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

如何用matlab工具箱训练一个SOM神经网络

本站原创文章,转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com

本文展示如何用matlab工具箱训练一个SOM神经网络的DEMO

并讲解其中的代码含义和相关使用说明

- 01.SOM神经网络DEMO代码 -


- 本文说明 -


下面,我们先随机初始化一些样本点,
然后调用matlab的神经网络工具箱训练一个SOM神经网络
并借此DEMO讲解如何用matlab工具箱SOM神经网络的使用

- SOM神经网络DEMO代码 -


% 本demo展示用matlab工具箱训练一个SOM神经网络% 生成用于聚类的数据rand('seed',70);% 随机种子,设定随机种子是为了每次的结果一样
dataC =[2.5,2.5;7.5,2.5;2.5,7.5;7.5,7.5]';% 生成四个样本中心
sn =80;% 样本个数
X =rand(2,sn)+dataC(:,mod(1:sn,4)+1);% 随机生成样本点% 调用工具箱训练一个SOM网络                        
net =selforgmap([35]);% 建立一个SOM神经网络
net =train(net,X);% 训练网络
W   = net.IW{1};% 网络的权重,也即各个聚类中心的位置
y   =net(X);% 用训练好的网络进行预测
classes =vec2ind(y);% 将预测结果由one-hot格式转为类别索引% 绘图plot(X(1,:),X(2,:),'*');% 原始样本
hold on 
plot(W(:,1),W(:,2),'or','MarkerFaceColor','g');% 网络训练好的聚类中心

- 运行结果 -


运行结果如下


绿色的隐神经元(聚类中心),红色的是样本


- 02. matlab的SOM神经网络使用解说 -


本节讲解matlab工具箱如何训练一个SOM神经网络,及一些常用的问题

- 如何训练一个SOM神经网络 -


从上面的例子我们可以看到,
使用selforgmap函数就可以建立一个SOM神经网络,
然后用train函数对网络进行训练(需要传入训练的数据),
最后把要预测的样本传入训练好的net中,就可以得到预测结果
如下
net = selforgmap([3 5]);
net = train(net,X);
y = net(X);
PASS:selforgmap中的[3 5]用于指定隐节点拓扑为3*5,即15个隐节点
✍️关于selforgmap的入参说明
selforgmap共有5个入参:
dimensions :行向量,它定义了隐层神经元尺寸
例如[8 3]定义了2维(8*3)的隐层
coverSteps :在该步数之后,领域距离<=1,即不再更新邻域神经元
initNeighbor :初始的邻域阈值
topologyFcn :隐层拓扑结构函数
distanceFcn :拓扑距离计算函数
默认参数为:selforgmap([8 8],100,3,'hextop',linkdist')

- 如何预测类别 -


如果要预测样本X的类别,
只需使用net(X)就可以得到样本的分类类别
如果net(X)输出[0,0,1],则代表类别是第3类

如何将one-hot形式的判别结果转为类别序号
net(X)得到分类结果的是one-hot形式,
即得到的结果是[0 ,0 ,1]这种形式
为了直接得到类别的序号3,而不是[0 ,0 ,1],
可以通过vec2ind函数将[0 ,0 ,1]转为3
如下

- 如何查看类别中心 -


SOM神经网络的权重W就是各个类别中心
用net.IW{1}就可以提取出来
如下,就是15个聚类中心的位置


- 相关的绘图函数 -


另外,工具箱还附带了相关的绘图函数
可以画出较好看的SOM相关图片
👉plotsomhits
👉plotsomnc
👉plotsomnd
👉plotsomplanes
👉plotsompos
👉plotsomtop
但基本都是只有数据是二维时才能使用/或才具有意义
因此老饼不再讲解,需要了解的自行在matlab里help一下


相关文章

《BP神经网络梯度推导》

《BP神经网络提取的数学表达式》

《一个BP的完整建模流程》

相关文章:

如何用matlab工具箱训练一个SOM神经网络

本站原创文章&#xff0c;转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com本文展示如何用matlab工具箱训练一个SOM神经网络的DEMO并讲解其中的代码含义和相关使用说明- 01.SOM神经网络DEMO代码 -- 本文说明 -下面&#xff0c;我们先随机初始化一些样本点&#xff0c;然后…...

音视频技术开发周刊 | 285

每周一期&#xff0c;纵览音视频技术领域的干货。新闻投稿&#xff1a;contributelivevideostack.com。GPT-4 Office全家桶发布谷歌前脚刚宣布AI工具整合进Workspace&#xff0c;微软后脚就急匆匆召开了发布会&#xff0c;人狠话不多地祭出了办公软件王炸——Microsoft 365 Cop…...

安装flume

flume最主要的作用就是实时读取服务器本地磁盘的数据&#xff0c;将数据写入到hdfs中架构&#xff1a;开始安装一&#xff0c;上传压缩包&#xff0c;解压并更名解压&#xff1a;[rootsiwen install]# tar -zxf apache-flume-1.9.0-bin.tar.gz -C ../soft/[rootsiwen install]#…...

为工作排好优先级

工作&#xff0c;是干不完的&#xff0c;因此我们需要分清轻重缓急&#xff0c;为它们划分优先级&#xff0c;这样才不至于让自己手忙脚乱。 给手头的事情排上正确的优先级&#xff0c;是一项很重要的工作能力。 优先级有很多考量&#xff0c;并不是简单的先来后到的线性时间…...

超专业解析!10分钟带你搞懂Linux中直接I/O原理

我们先看一张图&#xff1a; 这张图大体上描述了 Linux 系统上&#xff0c;应用程序对磁盘上的文件进行读写时&#xff0c;从上到下经历了哪些事情。 这篇文章就以这张图为基础&#xff0c;介绍 Linux 在 I/O 上做了哪些事情。 文件系统 什么是文件系统 文件系统&#xff0…...

【C++】面试101,用两个栈实现队列,包含min函数的栈,有效括号序列,滑动窗口的最大值,最小的K个数,倒置字符串,排序子序列,跳跃,数字三角形,蓝肽子序列

目录 1. 用两个栈实现队列 2.包含min函数的栈 3.有效括号序列 4.滑动窗口的最大值 5.最小的K个数 6.倒置字符串 7.排序子序列 8.数字三角形&#xff08;蓝桥杯&#xff0c;学习一个大佬的博客....&#xff09; 9.跳跃&#xff08;蓝桥杯&#xff09; 10.蓝肽子序列 1. 用…...

WPF 认识WPF

什么是WPF?WPF是Windows Presentation Foundation(Windows展示基础)简称&#xff0c;顾名思义是专门编写表示层的技术。WPF绚丽界面如下&#xff1a;GUI发展及WPF历史&#xff1f;Windows系统平台上从事图形用户界面GUI(Graphic User Interface)已经经历了多次换代&#xff0c…...

【建议收藏】PHP单例模式详解以及实际运用

PHP单例模式详解以及实际运用 什么是单例模式? 首先我们百度百科他怎么说? 单例模式&#xff0c;属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例&#xff08;根据需要&#xff0c;也有可能一个线程中属于单例&#xff0c;如&a…...

【十二天学java】day04-流程控制语句

第一章 流程控制语句 在一个程序执行的过程中&#xff0c;各条语句的执行顺序对程序的结果是有直接影响的。所以&#xff0c;我们必须清楚每条语句的执行流程。而且&#xff0c;很多时候要通过控制语句的执行顺序来实现我们想要的功能。 1.1 流程控制语句分类 顺序结构 判断…...

Pandas 与 PySpark 强强联手,功能与速度齐飞

Pandas做数据处理可以说是yyds&#xff01;而它的缺点也是非常明显&#xff0c;Pandas 只能单机处理&#xff0c;它不能随数据量线性伸缩。例如&#xff0c;如果 pandas 试图读取的数据集大于一台机器的可用内存&#xff0c;则会因内存不足而失败。 另外 pandas 在处理大型数据…...

【Zabbix实战之部署篇】docker部署Zabbix+grafana监控平台

【Zabbix实战之部署篇】docker部署Zabbix+grafana监控平台 一、Zabbix介绍1.Zabbix简介2.Zabbix的优点3.Zabbix各组件介绍4.Zabbix架构图二、grafana介绍1.grafana简介2.grafana特点三、实践环境规划四、检查本地docker环境1.检查操作系统版本2.检查docker版本3.检查docker服务…...

acm省赛:高桥和低桥(三种做法:区间计数、树状数组、线段树)

题目描述 有个脑筋急转弯是这样的&#xff1a;有距离很近的一高一低两座桥&#xff0c;两次洪水之后高桥被淹了两次&#xff0c;低桥却只被淹了一次&#xff0c;为什么&#xff1f;答案是&#xff1a;因为低桥太低了&#xff0c;第一次洪水退去之后水位依然在低桥之上&#xff…...

stm32-定时器详解

0. 概述 本文针对STM32F1系列&#xff0c;主要讲解了其中的8个定时器的原理和功能 1. 定时器分类 STM32F1 系列中&#xff0c;除了互联型的产品&#xff0c;共有 8 个定时器&#xff0c;分为基本定时器&#xff0c;通用定时器和高级定时器基本定时器 TIM6 和 TIM7 是一个 16 位…...

《硬件架构的艺术》读书笔记:Chapter 1 亚稳态的世界

Chapter 1 亚稳态的世界 一、简介 同步系统中&#xff0c;数据和时钟有固定的因果关系(在同一时钟域(Clock Domains))中&#xff0c;只要数据和时钟满足建立时间和保持时间的要求&#xff0c;不会产生亚稳态(meastable) 静态时序分析(STA) 就是基于同步电路设计模型而出现的&am…...

开箱即用的密码框组件

写了一个小玩具&#xff0c;分享一下 - 组件功能&#xff1a; 初次进入页面时&#xff0c;密码隐藏显示&#xff0c;且无法查看真实密码 当修改密码时&#xff0c;触发键盘&#xff0c;输入框则会直接清空 此时输入密码&#xff0c;可以设置密码的隐藏或显示&#xff1a; …...

ChatGPT能否取代程序员?

目录ChatGPT能否取代程序员&#xff1f;ChatGPT和程序员的工作内容和工作方式ChatGPT和程序员的共同点程序员的优势程序员的实力ChatGPT和程序员的关系结论惊喜ChatGPT能否取代程序员&#xff1f; ChatGPT是一种非常普遍的人工智能&#xff08;AI&#xff09;系统&#xff0c;…...

案例分享 | 金融微服务场景下如何提升运维可观测性

​云原生环境下金融业务的微服务化改造以及分布式架构的部署&#xff0c;使得业务与开发部门的关联更为紧密&#xff0c;传统运维监控已满足不了业务运营需求&#xff0c;亟需建设具备可观测性的运维体系。所以这次我们以某金融客户的实践案例为例&#xff0c;跟大家说一说在金…...

CentOS8提高篇3:Centos8安装播放器(mplayer vlc)

1. 准备工作&#xff08;需要配置epel, rpmfusion源&#xff09;; 配置epel源 下载epel dnf install epel-release 配置rpmfusion源 下载rpmforge dnf install rpmfusion-free-release-8.noarch.rpm 2. 安装mplayer和vlc 直接dnf安装 # dnf install mplayer # dnf install v…...

MySQL-存储过程

什么是存储过程我们前面所学习的MySQL语句都是针对一个表或几个表的单条 SQL 语句&#xff0c;但是在数据库的实际操作中&#xff0c;并非所有操作都那么简单&#xff0c;经常会有一个完整的操作需要多条SQL语句处理多个表才能完成。例如&#xff0c;为了确认学生能否毕业&…...

经典七大比较排序算法 · 下 + 附计数和基数排序

经典七大比较排序算法 下 附计数和基数排序1 插入排序1.1 算法思想1.2 代码实现1.3 插入排序特性2 希尔排序2.1 算法思想2.2 代码实现2.3 希尔排序特性3 七大比较排序特性总结4 计数排序4.1 算法思想4.2 代码实现4.3 计数排序特性5 基数排序5.1 算法思想5.2 代码实现1 插入排…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台

淘宝扭蛋机小程序系统的开发&#xff0c;旨在打造一个互动性强的购物平台&#xff0c;让用户在购物的同时&#xff0c;能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机&#xff0c;实现旋转、抽拉等动作&#xff0c;增…...

【SpringBoot自动化部署】

SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一&#xff0c;能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时&#xff0c;需要添加Git仓库地址和凭证&#xff0c;设置构建触发器&#xff08;如GitHub…...

go 里面的指针

指针 在 Go 中&#xff0c;指针&#xff08;pointer&#xff09;是一个变量的内存地址&#xff0c;就像 C 语言那样&#xff1a; a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10&#xff0c;通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...