Python笔记 #21# DHNN
离散型hopfield神经网络。参考自http://web.cs.ucla.edu/~rosen/161/notes/hopfield.html实现的草稿版本:
# http://web.cs.ucla.edu/~rosen/161/notes/hopfield.html attractors = np.array([[0, 1, 1, 0, 1], [1, 0, 1, 0, 1]])
print('attractors:\n', attractors) weight_matrix = np.zeros((5, 5))
print('weight_matrix:\n', weight_matrix)
# 第一个向量表示第一个节点到各个节点的权值 # 初始化网络,权值是对称的,例如w12 = w21,而w11 w22都是0
# for i in range(len(weight_matrix)):
def reflect_about_the_diagonal(matrix):
# 将矩阵上三角翻转拷贝到下三角
matrix += matrix.T - np.diag(matrix.diagonal()) for attractor in attractors:
temp_matrix = np.zeros((5, 5))
for i in range(0, 4):
for j in range(i + 1, 5):
temp_matrix[i, j] = (2 * attractor[i] - 1) * (2 * attractor[j] - 1)
weight_matrix += temp_matrix reflect_about_the_diagonal(weight_matrix)
print('weight_matrix:\n', weight_matrix) # print(weight_matrix[2].dot(attractors[0])) # 类似于bp里的预测,som里的map
def xxxx(input_vector):
vector = input_vector.copy() stable_state = False random_order = np.arange(len(attractors[0])) while not stable_state:
# 生成一个随机序列,以随机的顺序更新节点
np.random.shuffle(random_order)
stable_state = True
for i in random_order:
original_value = vector[i]
vector[i] = weight_matrix[i].dot(vector)
if (vector[i] >= 0):
vector[i] = 1
else:
vector[i] = 0
if (vector[i] != original_value):
print(i, "change ", original_value, '->', vector[i])
stable_state = False return vector x = [1, 1, 1, 1, 1]
print('test:', x, '->', xxxx(np.array(x)))
Python笔记 #21# DHNN的更多相关文章
- python笔记21(面向对象课程三)
今日内容 嵌套 特殊方法:__init__ type/isinstance/issubclass/super 异常处理 内容回顾 def login(): pass login() class Acc ...
- 13.python笔记之pyyaml模块
Date:2016-03-25 Title:13.Python笔记之Pyymal模块使用 Tags:Python Category:Python 博客地址:www.liuyao.me 作者:刘耀 YA ...
- 8.python笔记之面向对象基础
title: 8.Python笔记之面向对象基础 date: 2016-02-21 15:10:35 tags: Python categories: Python --- 面向对象思维导图 (来自1 ...
- python笔记 - day5
python笔记 - day5 参考: http://www.cnblogs.com/wupeiqi/articles/5484747.html http://www.cnblogs.com/alex ...
- s21day06 python笔记
s21day06 python笔记 一.昨日内容回顾及补充 回顾 补充 列表独有功能 reverse:反转 v = [1,2,3,4,5] v.reverse() #[5,4,3,2,1] sort: ...
- python笔记-1(import导入、time/datetime/random/os/sys模块)
python笔记-6(import导入.time/datetime/random/os/sys模块) 一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其 ...
- python笔记(2)--字符串
一.字符串 字符串是不可变序列,具有序列的公共操作方法,具体操作见python笔记(1)--序列(列表 元组 range) 1.创建字符串 单引号:'Hello , I am Logan ! ' 双引 ...
- python笔记06
python笔记06 数据类型 上个笔记内容补充 补充 列表 reverse,反转. v1 = [1,2,3111,32,13] print(v1) v1.reverse() print(v1) v1 ...
- Python笔记之不可不练
如果您已经有了一定的Python编程基础,那么本文就是为您的编程能力锦上添花,如果您刚刚开始对Python有一点点兴趣,不怕,Python的重点基础知识已经总结在博文<Python笔记之不可不知 ...
随机推荐
- Java知识点ArrayList
ArrayList List<ApiSvcVersion> apiSvcVersionList = apiSvcVersionDao.getListByClientId(map1); // ...
- Python第三弹--------文件和异常
文件读取: pi_digits.txt 3.1415926535 8979323846 2643383279 file_reader.py with open('pi_digits.txt') ...
- SOA架构大概思路
1.创建父工程(pom)管理jar包版本 2.创建子工程common工程(jar)管理通用工具类.通用pojo 3.创建服务层工程(聚合工程(pom)) 3.1.创建模块(dao.pojo.inter ...
- [Java in NetBeans] Lesson 09. Switch / If-Else Ladder
这个课程的参考视频和图片来自youtube. 主要学到的知识点有: 1. Nested If-else statement (if-else ladder) /** * 90 and above == ...
- malloc调用后经历了什么?
进程生成虚拟地址空间,有堆地址,由于是虚拟地址,所以没有做内存碎片化处理,只是在虚拟内存不够的时候调用brk,进行堆大小的调整,然后申请到虚拟内存是页,同MMU映射到物理地址,然后并不是每个页都预先加 ...
- Java Selenium - 元素操作 (三)
接上一篇,我们依然以京东的网站做示例. 三,单选项 下面来做这样一条case: 1. 登录京东旅行网页. 2. 在国内机票板块,购买从北京到武汉的往返机票,时间为明天出发,一周后返回. 3.搜索机票. ...
- Linux学习笔记:常用100条命令(二)
linux常用命令 1.vi中复制快捷键 yy --复制 p --粘贴 2.vi中保存退出 ZZ 3.linux解压zip unzip 4.查看软件组包 yum grouplist 5.安装组包 yu ...
- composer 用法
构建工程 composer create-project test/name project_name help composer help create-project 参数 --prefer-di ...
- iOS 添加启动图片
之前添加启动图片,一直都是通过添加LaunchImage来实现,见链接 http://www.cnblogs.com/jys509/p/4856068.html 这种方法,就需要给每个尺寸添加图片. ...
- 力攻突破M20的5分钟BOLL