离散Hopfield神经网络的分类——高校科研能力评价
离散Hopfield网络
离散Hopfield网络是一种经典的神经网络模型,它的基本原理是利用离散化的神经元和离散化的权值矩阵来实现模式识别和模式恢复的功能。它最初由美国物理学家John Hopfield在1982年提出,是一种单层的全连接神经网络,被广泛应用于模式识别、优化问题、自组织学习等领域。
离散Hopfield网络的基本结构由n个离散化的神经元和它们之间的全连接权值矩阵组成。每个神经元都只能取两种值,通常为1和-1。权值矩阵中的每个元素表示两个神经元之间的连接强度,即它们对彼此的影响程度。离散Hopfield网络的学习规则是基于Hebbian学习规则的,即当两个神经元同时激活时,它们之间的连接强度会增强。
离散Hopfield网络的主要功能包括模式存储、模式识别和模式恢复。在模式存储阶段,网络会将训练集中的模式存储到权值矩阵中,使得每个模式成为网络的一个吸引子。在模式识别阶段,当网络接收到一个输入模式时,它会通过神经元之间的相互作用产生一个新的状态,并在权值矩阵中寻找最接近的吸引子,将输入模式恢复为最接近的训练模式。如果网络无法恢复出一个完整的模式,那么它将停留在局部极小值或者进入震荡状态。
总之,离散Hopfield网络是一种简单但强大的神经网络模型,它在模式识别和模式恢复方面具有很好的性能,但也存在一些限制和缺陷,如存储容量有限、容易陷入局部极小值等。
与多层感知机所采用“分层型”神经网络的结构不同,Hopfield神经网络是基于“相互连接型”的、递归式的网络。
从学习的观点 来看,它是一个强有力的学习系统,系统结构简单,易于编程。
从系统的观点 来看,它是一个静态的非线性映射,通过简单的非线性处理单元的复合映射可获得复杂系统的非线性处理能力。
从 计算的观点 来看,它并不是一强有力系统,缺乏丰富的 动力学 行为。
Hopfield网络的特点:
神经元可取二值 {0/1} 或{-1/1},其中的任意神经元i与j 间的突触权值为 Wij ,且神经元之间的连接是对称的,即,Wij = Wji ;且神经元自身无连接,但每个神经元都与其他的神经元相连。
每个神经元都将其输出通过突触权值传递给其他的神经元,同时每个神经元又都接收来自其他神经元传来的信息,这样对于每个神经元来说,其输出信号经过其他神经元后又可能反馈给自己,所以Hopfield网络是一种反馈神经网络。
其他的博主讲的原理会比我详细很多,建议去看其他博主的原理讲解,然后再来看我的实际例子效果会更好。
代码详情
Chapter1
%% 离散Hopfield的分类——高校科研能力评价%% 清空环境变量
clear all
clc%% 导入数据
load class.mat%% 目标向量
T = [class_1 class_2 class_3 class_4 class_5];%% 创建网络
net = newhop(T);%% 导入待分类样本
load sim.mat
A = {[sim_1 sim_2 sim_3 sim_4 sim_5]};%% 网络仿真
Y = sim(net,{25 20},{},A);%% 结果显示
Y1 = Y{20}(:,1:5)
Y2 = Y{20}(:,6:10)
Y3 = Y{20}(:,11:15)
Y4 = Y{20}(:,16:20)
Y5 = Y{20}(:,21:25)%% 绘图
result = {T;A{1};Y{20}};
figure
for p = 1:3for k = 1:5 subplot(3,5,(p-1)*5+k)temp = result{p}(:,(k-1)*5+1:k*5);[m,n] = size(temp);for i = 1:mfor j = 1:nif temp(i,j) > 0plot(j,m-i,'ko','MarkerFaceColor','k');elseplot(j,m-i,'ko');endhold onendendaxis([0 6 0 12])axis offif p == 1title(['class' num2str(k)])elseif p == 2title(['pre-sim' num2str(k)])elsetitle(['sim' num2str(k)])endend
end% 案例扩展(无法分辨情况)
noisy = [1 -1 -1 -1 -1;-1 -1 -1 1 -1;-1 1 -1 -1 -1;-1 1 -1 -1 -1;1 -1 -1 -1 -1;-1 -1 1 -1 -1;-1 -1 -1 1 -1;-1 -1 -1 -1 1;-1 1 -1 -1 -1;-1 -1 -1 1 -1;-1 -1 1 -1 -1];
y = sim(net,{5 100},{},{noisy});
a = y{100}
Read me
文件说明:1. chapter1.m为主程序,将该文件夹设置为MATLAB当前工作路径,运行即可。2. class.mat为五个理想的等级评价指标编码矩阵,sim.mat为5所待分类高校的等级评价指标编码矩阵。3. stdlib.m为利用MATLAB自带工具箱创建的一个离散型Hopfield网络例子,test.m为与之对应的神经网络工具箱函数拆解的程序(具体在配套的视频中有详细的讲解)。4. 该程序在MATLAB2009a版本下测试通过,个别函数在低版本中不存在或者调用格式有所不同,参照对应版本中的帮助文档修改即可。stdlib
%% 离散Hopfield的分类——高校科研能力评价%% 清空环境变量
clear all
clc%% 导入记忆模式
T = [-1 -1 1; 1 -1 1]';%% 创建网络
net = newhop(T);%% 导入待记忆模式
Ai = {[-0.7; -0.6; 0.6]};%% 网络记忆
a = sim(net,{1,5},{},Ai);
a{1}Test
%% 离散Hopfield的分类——高校科研能力评价%% 清空环境变量
clear all
clc%% 导入记忆模式
T = [-1 -1 1; 1 -1 1]';%% 权值和阈值学习
[S,Q] = size(T);
Y = T(:,1:Q-1) - T(:,Q)*ones(1,Q-1);
[U,SS,V] = svd(Y);
K = rank(SS);TP = zeros(S,S);
for k = 1:KTP = TP + U(:,k)*U(:,k)';
endTM = zeros(S,S);
for k = K+1:STM = TM + U(:,k)*U(:,k)';
endtau = 10;
Ttau = TP - tau*TM;
Itau = T(:,Q) - Ttau*T(:,Q);h = 0.15;
C1 = exp(h)-1;
C2 = -(exp(-tau*h) - 1)/tau;w = expm(h*Ttau);
b = U * [ C1*eye(K) zeros(K,S-K);zeros(S-K,K) C2*eye(S-K)] * U' * Itau;%% 导入待记忆的模式
Ai = [-0.7; -0.6; 0.6];
y0 = Ai;%% 迭代计算
for i = 1:5for j = 1:size(y0,1)y{i}(j,:) = satlins(w(j,:)*y0 + b(j));endy0 = y{i};
end
y{1}总共有两组数据,如果有需要的可以私信联系。
相关文章:
离散Hopfield神经网络的分类——高校科研能力评价
离散Hopfield网络离散Hopfield网络是一种经典的神经网络模型,它的基本原理是利用离散化的神经元和离散化的权值矩阵来实现模式识别和模式恢复的功能。它最初由美国物理学家John Hopfield在1982年提出,是一种单层的全连接神经网络,被广泛应用于…...
Retrofit核心源码分析(三)- Call逻辑分析和扩展机制
在前面的两篇文章中,我们已经对 Retrofit 的注解解析、动态代理、网络请求和响应处理机制有了一定的了解。在这篇文章中,我们将深入分析 Retrofit 的 Call 逻辑,并介绍 Retrofit 的扩展机制。 一、Call 逻辑分析 Call 是 Retrofit 中最基本…...
源码分析spring如和对@Component注解进行BeanDefinition注册的
Spring ioc主要职责为依赖进行处理(依赖注入、依赖查找)、容器以及托管的(java bean、资源配置、事件)资源声明周期管理;在ioc容器启动对元信息进行读取(比如xml bean注解等)、事件管理、国际化等处理;首先…...
C语言--字符串函数1
目录前言strlenstrlen的模拟实现strcpystrcatstrcat的模拟实现strcmpstrcmp的模拟实现strncpystrncatstrncmpstrstrstrchr和strrchrstrstr的模拟实现前言 本章我们将重点介绍处理字符和字符串的库函数的使用和注意事项。 strlen 我们先来看一个我们最熟悉的求字符串长度的库…...
Webstorm使用、nginx启动、FinalShell使用
文章目录 主题设置FinalShellFinalShell nginx 启动历史命令Nginx页面发布配置Webstorm的一些常用快捷键代码生成字体大小修改Webstorm - gitCode 代码拉取webstorm 汉化webstorm导致CPU占用率高方法一 【忽略node_modules】方法二 【设置 - 代码编辑 - 快速预览文档 - 关闭】主…...
源码分析Spring @Configuration注解如何巧夺天空,偷梁换柱。
前言 回想起五年前的一次面试,面试官问Configuration注解和Component注解有什么区别?记得当时的回答是: 相同点:Configuration注解继承于Component注解,都可以用来通过ClassPathBeanDefinitionScanner装载Spring bean…...
vector的使用及模拟实现
目录 一.vector的介绍及使用 1.vector的介绍 2.vector的使用 1.vector的定义 2.vector iterator的使用 3. vector 空间增长问题 4.vector 增删查改 3.vector 迭代器失效问题(重点) 1. 会引起其底层空间改变的操作 2.指定位置元素的删除操作--erase 3. Li…...
“华为杯”研究生数学建模竞赛2007年-【华为杯】A题:基于自助法和核密度估计的膳食暴露评估模型(附获奖论文)
赛题描述 我国是一个拥有13亿人口的发展中国家,每天都在消费大量的各种食品,这批食品是由成千上万的食品加工厂、不可计数的小作坊、几亿农民生产出来的,并且经过较多的中间环节和长途运输后才为广大群众所消费,加之近年来我国经济发展迅速而环境治理没有能够完全跟上,以…...
刷题(第三周)
目录 [CISCN2021 Quals]upload [羊城杯 2020]EasySer [网鼎杯 2020 青龙组]notes [SWPU2019]Web4 [Black Watch 入群题]Web [HFCTF2020]BabyUpload [CISCN2021 Quals]upload 打开界面以后,发现直接给出了源码 <?php if (!isset($_GET["ctf"]))…...
新C++(14):移动语义与右值引用
当你在学习语言的时候,是否经常听到过一种说法,""左边的叫做左值,""右边的叫做右值。这句话对吗?从某种意义上来说,这句话只是说对了一部分。---前言一、什么是左右值?通常认为:左值是一个表示数据的表达式(…...
TCP相关概念
目录 一.滑动窗口 1.1概念 1.2滑动窗口存在的意义 1.3 滑动窗口的大小变化 1.4丢包问题 二.拥塞控制 三.延迟应答 四.捎带应答 五.面向字节流 六.粘包问题 七.TIME_WAIT状态 八.listen第2个参数 九.TCP总结 一.滑动窗口 1.1概念 概念:双方在进行通信时&a…...
MySQL锁篇
MySQL锁篇 一、一条update语句 我们的故事继续发展,我们还是使用t这个表: CREATE TABLE t (id INT PRIMARY KEY,c VARCHAR(100) ) EngineInnoDB CHARSETutf8;现在表里的数据就是这样的: mysql> SELECT * FROM t; —------- | id | c | —…...
SWF (Simple Workflow Service)简介
Amazon Simple Workflow Service (Amazon SWF) 提供了给应用程序异步、分布式处理的流程工具。 SWF可以用在媒体处理、网站应用程序后端、商业流程、数据分析和一系列定义好的任务上。 举个例子,下图表明了一个电商网站的工作流程,其中涉及了程序执行的…...
java(Class 常用方法 获取Class对象六种方式 动态和静态加载 类加载流程)
ClassClass常用方法获取Class对象六种方式哪些类型有Class对象动态和静态加载类加载流程加载阶段连接阶段连接阶段-验证连接阶段-准备连接阶段-解析初始化阶段获取类结构信息Class常用方法 第一步:创建一个实体类 public class Car {public String brand "宝…...
【数据结构】线性表和顺序表
Yan-英杰的主页 悟已往之不谏 知来者之可追 目录 1.线性表 2.顺序表 2.1 静态顺序表 2.2 动态顺序表 2.3移除元素 1.线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线…...
Ubuntu数据库安装(mysql)
##1.下载mysql-apt-config_0.8.22-1_all.deb并且安装 wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb sudo dpkg -i mysql-apt-config_0.8.22-1_all.deb##2.更新apt-updata sudo apt update##3.如果出现如下图情况执行以下命令 [外链图片转存失败,源站可…...
MyBatis-Plus的入门学习
MyBatis-Plus入门学习简介特性快速开始MyBatis-Plus的注解详解Tableld主键生成策略1、数据库自动增长 AUTO2、UUID3、Redis生成id4、MP主键自动生成TableNameTableField自动填充测试方法:update乐观锁select查所有根据id查多个id批量查询简单条件查询(通…...
华为OD机试题 - 内存池(JavaScript)
更多题库,搜索引擎搜 梦想橡皮擦华为OD 👑👑👑 更多华为OD题库,搜 梦想橡皮擦 华为OD 👑👑👑 更多华为机考题库,搜 梦想橡皮擦华为OD 👑👑👑 华为OD机试题 最近更新的博客使用说明本篇题解:内存池题目输入输出示例一输入输出说明Code解题思路版权说明华为…...
数据库索引原理
数据库索引的作用是做数据的快速检索,而快速检索实现的本质是数据结构。像二叉树、红黑树、AVL树、B树、B树、哈希等数据结构都可以实现索引,但其中B树效率最高。MySQL数据库索引使用的是B树。二叉树:二叉树中,左子树比根节点小&a…...
字符函数和字符串函数详解(1)
目录前言strlen函数strlensizeofstrcpy函数strcat函数strcmp函数总结前言 最近要调整状态,写的文章质量不佳让大家失望,我现在也在反思我在做什么,我会什么,我学了什么。等我想明白的那天,我一定能跟大家顶峰相见的&a…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...
Mac flutter环境搭建
一、下载flutter sdk 制作 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 1、查看mac电脑处理器选择sdk 2、解压 unzip ~/Downloads/flutter_macos_arm64_3.32.2-stable.zip \ -d ~/development/ 3、添加环境变量 命令行打开配置环境变量文件 ope…...
[拓扑优化] 1.概述
常见的拓扑优化方法有:均匀化法、变密度法、渐进结构优化法、水平集法、移动可变形组件法等。 常见的数值计算方法有:有限元法、有限差分法、边界元法、离散元法、无网格法、扩展有限元法、等几何分析等。 将上述数值计算方法与拓扑优化方法结合&#…...
