传送门(所有的实验都使用python实现)

实验1 BP神经网络实验

实验2 som网实验

实验3 hopfield实现八皇后问题

实验4 模糊搜索算法预测薄冰厚度

实验5 遗传算法求解tsp问题

实验6 蚁群算法求解tsp问题

实验7 粒子群优化算法求解tsp问题

实验8 分布估计算法求解背包问题

实验9 模拟退火算法求解背包问题

实验10 禁忌搜索算法求解tsp问题

一、实验目的

了解使用som算法

二、实验内容

(描述实验任务)

试设计一个具有5*5神经元平面阵的SOM网,建议学习率(t)在前1000步训练中从0.5线性下降至0.04,然后在训练到10,000步时减小至0。优胜邻域半径初值设为2个节点(即优胜邻域覆盖整个输出平面),1000个训练步时减至0(即只含获胜节点)。每训练200步保留一次权向量,观察其在训练过程中的变化。给出训练结束后,5个输入模式在输出平面的映射图。

三、实验环境

(描述实验的软件、硬件环境)

使用Python3.0 在 eclipse进行编辑

四、实验步骤

(描述实验步骤及中间的结果或现象。在实验中做了什么事情,怎么做的,发生的现象和中间结果)

经过迭代学习10000次,得到的权重矩阵如下:

画图的结果如下:

未进行归一化所画的图

归一化之后画的图

五、总结

(说明实验过程中遇到的问题及解决办法;新发现或个人的收获;未解决/需进一步研讨的问题或建议新实验方法等)

对于python3,没有自带的numpy和pylab控件,要自己去下载安装包有点麻烦。输出层如果设置的点数过多会导致颜色不够用,在点数太少的情况下,输出的图归一化不明显。

python源码

# -*- coding: UTF-8 -*-
import numpy as np
import pylab as pl
def draw(C):                    #画图函数colValue = ['r', 'y', 'g', 'b', 'c', 'k', 'm']for i in range(len(C)):coo_X = []  coo_Y = []  for j in range(len(C[i])):coo_X.append(C[i][j][0])coo_Y.append(C[i][j][1])pl.scatter(coo_X, coo_Y, marker='x', color=colValue[i % len(colValue)], label=i)pl.legend(loc='upper right')pl.show()
class myson(object):def __init__(self, X, output, times, size):self.X = X          #输入样例self.output = output  #输出self.times = times  #迭代次数self.size = size  #数据长度self.W = np.random.rand(X.shape[1], output[0] * output[1])print(self.W.shape)def reE(self, t, n):return np.power(np.e, -n) / (t + 2)def reN(self, t):          # 返回拓扑距离a = min(self.output)return int(a - float(a) * t / self.times)def nei(self, index, N):     #确定获胜区域点a, b = self.outputlength = a * bdef dis(index1, index2):   #计算距离i1_a, i1_b = index1 // a, index1 % bi2_a, i2_b = index2 // a, index2 % breturn np.abs(i1_a - i2_a), np.abs(i1_b - i2_b)def upW(self, X, t, winner):     #更新权值N = self.reN(t)for x, i in enumerate(winner):to_update = self.nei(i[0], N)for j in range(N + 1):e = self.reE(t, j)for w in to_update[j]:self.W[:, w] = np.add(self.W[:, w], e * (X[x, :] - self.W[:, w]))ans = [set() for i in range(N + 1)]for i in range(length):dist_a, dist_b = dis(i, index)if dist_a <= N and dist_b <= N: ans[max(dist_a, dist_b)].add(i)  #将获胜节点加入集合return ansdef train(self):     #训练函数count = 0while self.times > count:train_X = self.X[np.random.choice(self.X.shape[0], self.size)]normal_W(self.W)normal_X(train_X)train_Y = train_X.dot(self.W)winner = np.argmax(train_Y, axis=1).tolist()self.upW(train_X, count, winner)count += 1return self.Wdef af_train(self):       #返回训练结果normal_X(self.X)train_Y = self.X.dot(self.W)winner = np.argmax(train_Y, axis=1).tolist()print(winner)return winnerdef normal_X(X):                    #输入归一化处理N, D = X.shapefor i in range(N):temp = np.sum(np.multiply(X[i], X[i]))X[i] /= np.sqrt(temp)return Xdef normal_W(W):       #初始权值归一化处理for i in range(W.shape[1]):temp = np.sum(np.multiply(W[:, i], W[:, i]))W[:, i] /= np.sqrt(temp)return Wif __name__ == '__main__':data = """1,0,0,0,1,1,0,0,1,1,1,0,0,1,0,0,1,1,1,1"""a = data.split(',')dataset = np.mat([[float(a[i]), float(a[i + 1]),float(a[i+2]),float(a[i+3]),] for i in range(0, len(a) - 1, 4)])dataset_old = dataset.copy()myson = myson(dataset, (5, 5), 1,5)myson.train()res = myson.af_train()classify = {}for i, win in enumerate(res):if not classify.get(win[0]):classify.setdefault(win[0], [i])else:classify[win[0]].append(i)A = []  # 未归一化的数据分类结果B = []  # 归一化的数据分类结果for i in classify.values():A.append(dataset_old[i].tolist())B.append(dataset[i].tolist())draw(A)   #未归一化画出的图draw(B)     #归一化之后画出的图

实验2 som网实验相关推荐

  1. 实验1 BP神经网络实验

    传送门(所有的实验都使用python实现) 实验1 BP神经网络实验 实验2 som网实验 实验3 hopfield实现八皇后问题 实验4 模糊搜索算法预测薄冰厚度 实验5 遗传算法求解tsp问题 实 ...

  2. 虚拟实验工场大学计算机实验报告答案,虚拟实验实验报告 - 实验报告 - 书业网.doc...

    虚拟实验实验报告 - 实验报告 - 书业网 虚拟实验实验报告 - 实验报告 - 书业网 篇一:虚拟实验报告 第一章 文献综述 1.1 丙酮酸脱氢酶概述 丙酮酸脱氢酶复合体(Pyruvate Dehyd ...

  3. java 柱状图jar_GitHub - mafulong/NetworkExper: 计网实验,抓包,java,jigloo界面开发,柱状图,文件自定义保存...

    jiWangShiYanByJava 计网实验,抓包,java,jigloo界面开发,柱状图,文件自定义保存 基于Winpcap的网络流量统计分析系统的设计与实现 一.实验内容描述 本实验是用java ...

  4. 2020计网实验报告

    title: 计网实验报告 date: 2020-12-13 16:31:07 tags: *实验名称* 实验1 WireShark的使用 *实验时间* 2020年10月7日 10:00-11:40时 ...

  5. 实验---采用SOM网络进行聚类

    1.SOM网络简介 自组织特征映射网络SOFM又称自组织映射网络SOM,是一种自组织竞争神经网络,一个神经网络接受外界输入模式时,将会分为不同的对应区域,各区域对输入模式具有不同的响应特征,而且这个过 ...

  6. 计通网实验的准备工作(C语言实现)

    今天老师布置计通网实验的项目.要实现两台计算机之间的通信.现在先考虑编码问题:即,如何实现中文和英文的混合编码. 经过实验,C语言中,一个中文字符的长度是2,但是英文字符的长度是1.如果加以区分,是一 ...

  7. ArcGIS基础实验操作100例--实验24提取栅格独立格网面

    本实验专栏参考自汤国安教授<地理信息系统基础实验操作100例>一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 基础编辑篇--实验24 提取栅格独立格网面 目录 一 ...

  8. BUAA 计网实验笔记 3

    BUAA 计网实验笔记 3 -第三周网络层实验 这周实验还是挺繁琐的,尤其是VLAN间通信,重点理解一下.要不然你可能也像我一样,实验4小时 实验(1) ARP分析 ARP协议是用来建立mac地址和i ...

  9. ArcGIS基础实验操作100例--实验76按格网统计点要素

    本实验专栏参考自汤国安教授<地理信息系统基础实验操作100例>一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 空间分析篇--实验76 按格网统计点要素 目录 一. ...

最新文章

  1. 2020中国人工智能年度评选开启,4大类别7大奖项申报正式启动
  2. js kettle 设置变量_kettle与钉钉结合的企业内部应用扩展01
  3. python实现udp聊天室_python网络编程基础--socket的简介,以及使用socket来搭建一个简单的udp小程序...
  4. boost::spirit::karma::real_generator相关的测试程序
  5. 重磅!教育部撤销518个高校专业
  6. 山海伏妖录java_山海伏妖录攻略大全 剧情结局加点妖兽大全
  7. nodemailer的使用
  8. (工作中)Apache常见配置
  9. ueditor编辑器初始化
  10. java生成随机数的三种方法
  11. 华为 荣耀 等手机解锁BootLoader
  12. Catalan Number(卡特兰数/卡塔兰数)
  13. 服务器开机自检提示信息,hp服务器开机自检报错提示
  14. 最快下月!地表最强语言模型GPT-4发布在即?CEO暗示:已通过图灵测试
  15. Spring Cloud微服务简介
  16. 基于pynq的数字识别神经网络加速器设计
  17. 【云计算】弹性公网IP
  18. A级和AA级哪个好?护眼灯A级和AA级的区别
  19. java netty教程_Netty4.1初学者教程(HelloWorld教程)
  20. CentOS7.5usb安装盘制作,inst.stage2=hd:LABEL=CentOS\x207\x20x\86_64找不到磁盘和无安装源问题

热门文章

  1. Android简单适配9.0~12.0
  2. 空间数据引擎oracle_SQL/Oracle数据库是怎样与GIS的应用相联系起来的?
  3. 语音转换主要涉及技术记录
  4. 马毅与来自高维度的恩赐
  5. linux 中输入bash,Linux上Bash Shell编程
  6. program和module区别
  7. 2000年数模B题 钢管订购和运输
  8. 数据结构课程设计---魔王语言解释
  9. 【英语阅读】纽约时报 | 乔布斯是对的:手机和iPad杀死了个人电脑
  10. 12月世界燕窝滋补品展|上海燕博会|冻干(即食)燕窝展谈食用燕窝