当前位置: 首页 > 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 插入排…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

消息队列系统设计与实践全解析

文章目录 &#x1f680; 消息队列系统设计与实践全解析&#x1f50d; 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡&#x1f4a1; 权衡决策框架 1.3 运维复杂度评估&#x1f527; 运维成本降低策略 &#x1f3d7;️ 二、典型架构设计2.1 分布式事务最终一致…...