MATLAB实现智能计算方法实验:实验五 Hopfield神经网络
资源链接
MATLAB实现智能计算方法课程所有实验代码资源链接为:MATLAB实现智能计算方法课程所有实验代码资源
实验汇总
MATLAB实现智能计算方法课程所有实验汇总博客链接为:MATLAB实现智能计算方法实验汇总
实验目的
- 通过本次实验,进一步理解Hopfield网络的模型结构与计算原理;
- 掌握手工计算过程和编码,并能够解决实际问题;
- 掌握MATLAB工具箱中的Hopfield相关函数,用工具箱实现编程,解决实际问题。
实验内容
在三维平面上,定义两个平衡点(1,-1,1)和(-1,1,-1),使所有的输入向量经过迭代最后都收敛到这两个点。
- 给出手工计算过程,并用代码(python或matlab)实现;
- 设计网络结构(以图的形式放入报告);
- 用MATLAB工具箱编程实现模型仿真。
实验步骤
1. 手工计算及编码
根据权值计算公式:wij={1n∑k=1muikujk,j≠i0,j=i{w_{ij}} = \left\{ \begin{array}{l} \frac{1}{n}\sum\limits_{k = 1}^m {u_i^ku_j^k,j \ne i} \\ 0,j = i \end{array} \right. wij=⎩⎨⎧n1k=1∑muikujk,j=i0,j=i
用矩阵形式表示:w=1n(∑k=1mUkUkT−mI)w=\frac{1}{n}(\sum\limits_{k=1}^{m}{U_{k}^{{}}U_{k}^{T}-mI)} w=n1(k=1∑mUkUkT−mI)
求得权值矩阵为:
13×([1−1−111−1]×[1−11−11−1]−2×[100010001])=13×[0−22−20−22−20]\frac{{\rm{1}}}{{\rm{3}}} \times \left( {\left[ \begin{array}{l} 1 & -1\\ -1 & 1\\ 1 & -1 \end{array} \right] \times \left[ \begin{array}{l} 1 & -1 & 1\\ -1 & 1 & -1 \end{array} \right] - 2 \times \left[ \begin{array}{l} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1 \end{array} \right]} \right) = \frac{{\rm{1}}}{{\rm{3}}} \times \left[ \begin{array}{l} 0 & - 2 & 2\\ -2 & 0 & -2\\ 2 & - 2 & 0 \end{array} \right] 31×⎝⎛⎣⎡1−11−11−1⎦⎤×[1−1−111−1]−2×⎣⎡100010001⎦⎤⎠⎞=31×⎣⎡0−22−20−22−20⎦⎤
假设某一次输入的向量为:[0.8−0.70.9]\left[ \begin{array}{l} 0.8\\ {\rm{ - 0}}{\rm{.7}}\\ {\rm{0}}{\rm{.9 }} \end{array} \right]⎣⎡0.8−0.70.9⎦⎤选择更新第二个神经元,根据公式vi(t+1)=Sgn[∑j=1Nwijxj(n)]{v_i}(t + 1) = Sgn[\sum\limits_{j = 1}^N {w_{ij}^{}x_j^{}(n)]} vi(t+1)=Sgn[j=1∑Nwijxj(n)]一次计算过程如下:
wijxj(n)=13×[−20−2]×[0.8−0.70.9]=−1.13w_{ij}^{}x_j^{}(n) = \frac{{\rm{1}}}{{\rm{3}}} \times \left[\begin{array}{l} -2 & 0 & -2 \end{array}\right] \times \left[ \begin{array}{l} 0.8\\ {\rm{ - 0}}{\rm{.7}}\\ {\rm{0}}{\rm{.9 }} \end{array} \right] = - {\rm{1}}{\rm{.13}} wijxj(n)=31×[−20−2]×⎣⎡0.8−0.70.9⎦⎤=−1.13
整个仿真过程通过编程实现,根据题意及上述计算过程,设计有两个记忆模式,每个记忆模式有三个分量的Hopfield神经网络,激励函数选择符号函数,代码如下:
clc;
clear;
T = [1 -1 1; -1 1 -1]';
[n, m] = size(T);
%计算网络权值
w = zeros(n, n);
for i = 1: mw = w + T(:, i)*T(:, i)';
end
w = (1/3)*(w - m*eye(n, n));
axis([-1 1 -1 1 -1 1]);
set(gca, 'box', 'on');
axis manual;
plot3(T(1, :), T(2, :), T(3, :), 'rp');%rp表示红色五角星
title('含有三个神经元的Hopfield网络状态空间');
xlabel('a(1)'); ylabel('a(2)'); zlabel('a(3)'); view([-36 30]); hold on;
%随机选取50个数进行仿真
for m = 1: 50v1 = rands(3);v0 = v1;n = length(v0);v = zeros(n, 1);while(sum(v ~= v0)~=0 || sum(abs(v0) - ones(n, 1)) ~= 0)v = v0;i = randi(n);if(w(i, :)*v0<0) v0(i, :) = -1;elsev0(i, :) = 1;endendtrack = [v1 v0];plot3(v1(1, 1), v1(2, 1), v1(3, 1), 'k+', track(1, :), track(2, :), track(3, :));hold on;
end
运行程序,结果如下图1。
图1 手工编码运行结果
由图可知,随机产生的输入向量经过迭代最后都收敛到设定的两个点。
2. 设计网络结构
设计Hopfield网络结构如下图。
图2 Hopfield网络结构图
3. 工具箱仿真
用MATLAB工具箱编程实现模型仿真,程序代码如下:
clc;
clear;
T=[1 -1 1; -1 1 -1]';
axis([-1 1 -1 1 -1 1]);
set(gca,'box', 'on');
axis manual;
hold on;
plot3(T(1, :), T(2, :),T(3, :), 'rp');
title('含有三个神经元的Hopfield网络状态空间');
xlabel('a(1)');
ylabel('a(2)');
zlabel('a(3)');
view([-36 30]);
%设计网络
net = newhop(T);
%随机选取50个初始点进行赋值,观察结果。
color = 'rgbmy';
for i = 1: 50a={rands(3, 1)};[y, Pf, Af] = sim(net, {1, 10}, {}, a);record = [cell2mat(a) cell2mat(y)];start = cell2mat(a);plot3(start(1, 1), start(2, 1), start(3, 1), 'k+', record(1, :), record(2, :), record(3, :), color(rem(i, 5) + 1));
end
执行程序,运行结果如下图3。
图3 工具箱运行结果 由图可知随机生成的50个初始点都收敛到(1,-1,1)和(-1,1,-1)这两个点。
MATLAB实现智能计算方法实验:实验五 Hopfield神经网络相关推荐
- MATLAB实现智能计算方法实验汇总
MATLAB实现智能计算方法实验汇总 代码资源链接 [实验一 模糊聚类分析](https://blog.csdn.net/qq_36949278/article/details/121051493) ...
- MATLAB实现智能计算方法实验:实验三 BP神经网络
资源链接 MATLAB实现智能计算方法课程所有实验代码资源链接为:MATLAB实现智能计算方法课程所有实验代码资源 本实验代码和excel文件可在GitHub仓库和gitee仓库中进行下载 实验汇总 ...
- MATLAB实现智能计算方法实验:实验一 模糊聚类分析
资源链接 MATLAB实现智能计算方法课程所有实验代码资源链接为:MATLAB实现智能计算方法课程所有实验代码资源 实验汇总 MATLAB实现智能计算方法课程所有实验汇总博客链接为:MATLAB实现智 ...
- MATLAB群智能开源第十五期-闪电优化算法(LAPO)
1 写在前面 该系列为基础群智能优化算法,欢迎私信一起交流问题,更多的改进算法可查看往期的推文.有问题或者需要其他建议的话,非常欢迎后台私信交流,共同进步,如若出现违反学术道德的情况与本博客以及作者无 ...
- 以太坊智能合约开发(五):Solidity成绩录入智能合约实验
以太坊智能合约开发(五):Solidity成绩录入智能合约实验 1 编写智能合约 1 编写智能合约 每个学生分别部署合约Student.sol ,保证只有自己可以修改姓名.老师部署合约StudentS ...
- Hopfield神经网络实验详解(MATLAB实现)
前言 分享第二弹,一份神经网络课上布置的实验报告.参数什么的可能在不同电脑上需要有所调整,还望用餐愉快.在此之前会简要介绍一下Hopfield神经网络的知识点. Hopfield网络(离散型) Hop ...
- matlab插值龙格实验,实验二 拉格朗日插值龙格现象
汕 头 大 学 实 验 报 告 学院: 工学院系: 计算机系专业: 计算机科学与技术年级:2010 姓名: 林金正学号:2010101032完成实验时间: 5月24日 一.实验名称:拉格朗日插值的龙格 ...
- matlab插值龙格实验,实验二 拉格朗日插值龙格现象.doc
实验二 拉格朗日插值龙格现象 汕 头 大 学 实 验 报 告 学院: 工学院 系: 计算机系 专业: 计算机科学与技术 年级: 2010 姓名: 林金正 学号: 2010101032 完成实验时间: ...
- 无失真传输matlab原理,信号与系统实验(MATLAB版)实验23综合实验4——无失真传输系统.ppt...
一.实验目的 在掌握相关基础知识的基础上,学会自己设计实验,学会运用MATLAB语言编程,并具有进行信号分析的能力.在本实验中学会利用所学方法,加深了解和掌握无失真的概念和条件. 二.实验内容 1 ...
最新文章
- NVIDIA GPU卷积网络的自动调谐
- python的try exception捕获异常
- 正则表达式调用“或”变量
- Windows锁定计算机C代码编程实现
- JQuery选中的对象和非选中的其他对象分别执行不同动作
- MySql日期处理系列-常用的日期推算处理
- 库克警告员工不要泄露公司信息:将全力追查
- Linux中vectormath无法通过pip安装的解决办法
- linux刷新jdk,Linux安装更新JDK
- 用python编写密码安全性_密码安全性
- DPDK性能优化技术汇总
- 当编程语言都变成女孩子
- 音频处理-2 WAV格式
- Springboot中@autowired和@resource注解的区别
- 多核cpu是并发还是并行_多核CPU及其带来的并发更改
- SpringBoot 实现 QQ邮箱注册和登录
- 蓝桥杯练习 数的读法
- 儿科学类毕业论文文献有哪些?
- 射频测试 —— 蓝牙定频测试3
- 【来日复制粘贴】数据透视表分类不同账龄
热门文章
- Oracle数据库用管理员登录,oracle数据库关于用户登录
- electron自动更新
- 人生就是一场猝不及防
- 如何使用 flv.js 做直播
- vijos 1011 清帝之惑之顺治 (记忆化搜索)
- 基于jsoup的Java服务端http(s)代理程序-代理服务器Demo
- 宿舍台灯什么光对眼睛好?推荐适合学生宿舍用的台灯
- Windows中cmd命令大全
- Eclipse配置代码注释模板 Eclipse代码注释模板 Eclipse设置方法注释模板
- spring boot基于Springboot的球鞋调货管理系统设计与实现 毕业设计-附源码160942