Hopfield网络的设计与实现
Hopfield网络的设计与实现
反馈神经网络,Hopfield网络,DHNN,Python。
通过Python编程,使用Hebb学习方法计算DHNN的权重参数;
通过Python编程,使用同步方法迭代DHNN,获取最终网络稳定状态
实验步骤
1,导入必要的函数库
2. 设计一个DHNN,激活函数使用符号函数
3. 将两幅灰度图片(1.png和2.png)转换为二值向量作为两个模式保存到DHNN
4. 使用外积法(Hebb学习规则)设计网络的权重参数,
5. 用异步迭代法,计算当输入一个全1向量时,网络的最终输出。
6. 计算当输入图片3.png时,网络的最终输出。
7. 计算当输入图片4.png时,网络的最终输出。
import numpy as np
from PIL import Image
import matplotlib.pyplot as pltimg2=Image.open("1.png")
img2=np.int64(np.array(img2)>127)
vector_train=img2.flatten()img2=Image.open("2.png")
img2=np.int64(np.array(img2)>127)
vector_train2=img2.flatten()attractors=np.array([vector_train,vector_train2])
attractors=attractors*2-1print("保存的模式:\n",attractors)
weight_matrix=np.zeros((len(attractors[0]),len(attractors[0])))for attractor in attractors:temp_matrix=np.zeros((len(attractor),len(attractor)))for i in range(len(attractor)):for j in range(i+1,len(attractor)):temp_matrix[i,j]=attractor[i]*attractor[j]temp_matrix[j,i]=temp_matrix[i,j]weight_matrix+=temp_matrix
print("权重矩阵:\n",weight_matrix)def DHNN(input_vector):vector=input_vector.copy()stable_state=Falserandom_order=np.arange(len(attractors[0]))while not stable_state:np.random.shuffle(random_order)stable_state=Truefor i in random_order:original_value=vector[i]vector[i]=weight_matrix[i].dot(vector)if(vector[i]>=0):vector[i]=1else:vector[i]=-1if(vector[i]!=original_value):print("节点",i,"发生变化",original_value,"->",vector[i])stable_state=Falsereturn vectorimg2=np.ones((66,66))
x=img2.flatten()
r=DHNN(np.array(x))
matrix_test_update=r.reshape(img2.shape)
img=Image.fromarray(np.uint8(matrix_test_update))
img.show()img2=Image.open("3.png")
img2=np.int64(np.array(img2)>127)
x=img2.flatten()
x=x*2-1
r=DHNN(np.array(x))
matrix_test_update=r.reshape(img2.shape)
img=Image.fromarray(np.uint8(matrix_test_update))
img.show()img2=Image.open("4.png")
img2.show()
img2=np.int64(np.array(img2)>127)
x=img2.flatten()
x=x*2-1
r=DHNN(np.array(x))
matrix_test_update=r.reshape(img2.shape)
img=Image.fromarray(np.uint8(matrix_test_update))
img.show()
Hopfield网络的设计与实现相关推荐
- Hopfield 网络(下)
讲的什么 这部分主要讲离散的 Hopfield 网络权值的计算方法,以及网络记忆容量.主要参考了网上搜到的一些相关 PPT. DHNN 的训练方法 常见的学习方法中有海布法,还有 \(\delta\) ...
- 系统学习机器学习之神经网络(九) --Hopfield网络
转自:http://blog.csdn.net/lg1259156776/article/details/47323889 一.前言 经过一段时间的积累,对于神经网络,已经基本掌握了感知器.BP算法及 ...
- 非线性规划在计算机中的应用研究,Hopfield网络在非线性规划中的应用研究.pdf
2000中国技 制与决 策学术年 会论 文 集 Hopfield网络在非线性规划中的应用 陈赞成 王华火 吉国力 (厦门大学 自动化系 361005) 摘 要 叙述了,种反债神经网络及非线性规划中的二 ...
- 智能计算之神经网络(Hopfield网络-DHNN,CHNN )介绍
目录 1. 神经网络受欢迎的原因 2. 人工神经网络定义 3. 人工神经网络的学习能力 4. 人工神经网络的基本原理 5. 神经网络的研究进展 6. 神经网络的典型结构 6.1 单层感知器网络 6.2 ...
- linux 远程挂载摄像头_基于Linux的嵌入式网络摄像机设计
本嵌入式网络摄像机采用高性能ARM9芯片微处理器,内置嵌入式Web服务器. 通过嵌入式多任务操作系统采集摄像机视频数据:采集的视频信号数字化后经MJPEG算法压缩,再通过内部总线送到内置的Web服务器 ...
- 什么是离散的Hopfield网络?
什么是离散的Hopfield网络?
- 多层感知机MLP、RBF网络、Hopfield网络、自组织映射神经网络、神经网络算法地图
多层感知机MLP.RBF网络.Hopfield网络.自组织映射神经网络.神经网络算法地图 目录
- android流量监控步骤_Android流量网络监控设计(超级实用版).doc
Android流量网络监控设计(超级实用版).doc 摘 要 伴随着Android智能移动设备的普及,其对网络系统和流量监控的要求越来越高,因而,让用户有能力实现对移动设备网络流量的实时监控和显示,同 ...
- 深度网络的设计与可视化工具
深度网络的设计与可视化工具 caffe Linux环境的准备 主要是根据 caffe install manual 来进行的.主要库的依赖可以用这个https://github.com/gwli/St ...
最新文章
- 【学习笔记】mysql多实例安装
- CF1060D Social Circles
- mysql命令导入存储过程报错_mysql导入存储过程时declare报错的有关问题解决
- scrapy使用笔记
- 网络标准之:IANA定义的传输编码
- 计算机设计大赛国奖作品_2. 报名材料
- python 键盘输入int_Python编程 Python如何获取数据
- OpenCV探索之路(零):HighGUI——使用imwrite调整保存的图片质量
- Django表中的字段
- installshield使用教程
- matlab 排序 sorttrows
- linux下hex文件到bin文件的格式转化,bin文件转换为hex文件操作步骤解析
- python正则匹配日期2019-03-11_正则表达式验证日期(多种日期格式)——转载
- 碰撞检测经典解决方案
- SEO系列之站内优化
- props传值强校验validator
- 类风湿性关节炎中的肠-关节轴
- c语言 二分查找法 及二分查找法的时间复杂度。
- cad指示箭头快捷键命令_CAD箭头引注快捷键是什么?
- 开关电源LC滤波器设计