2020年人工神经网络第二次作业

您所在的位置:网站首页 人工神经网络理论及应用韩力群课后答案第五章 2020年人工神经网络第二次作业

2020年人工神经网络第二次作业

2024-07-12 09:52| 来源: 网络整理| 查看: 265

如下是 2020年人工神经网络第二次作业 中第四题的参考答案。

 

➤01 第四题参考答案 1.题目分析 (1) 训练数据 第一个数据集合 这个数据集合包括有16中动物。它们的属性编码在题目中的表格中给出了。编码长度为13维。对于每个动物之后又增加一个16维的向量,使用one-hot编码来表面不同动物的类别。

十六中动物特征编码就是29维,它们组成16×29的数据矩阵。

十六种动物的名称:‘鸽子’, ‘母鸡’, ‘鸭’, ‘鹅’, ‘猫鹰’, ‘隼’, ‘鹰’, ‘狐狸’, ‘狗’, ‘狼’, ‘猫’, ‘虎’, ‘狮’, ‘马’, ‘斑马’, ‘牛’

[[1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0] [1 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0] [1 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0] [1 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0] [0 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0] [0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0] [0 1 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] [0 1 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0] [1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0] [0 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0] [0 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0] [0 0 1 0 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0] [0 0 1 0 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0] [0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1]] 第二个数据集合 32个样本的命名:ABCDEFGHIJKLMNOPQRSTUVWXYZ123456三个样本对应的特征矩阵: [[1 2 3 4 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3] [0 0 0 0 0 1 2 3 4 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3] [0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 3 3 3 3 6 6 6 6 6 6 6 6 6 6] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 1 2 3 4 2 2 2 2 2 2] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6]] (2) 网络结构

对应的两个数据集合所使用的SOFM竞争层神经网络都使用二维的拓扑结构。

第一个数据集合 第一个数据集合对应的SOFM网络,输入层节点的个数为29,输出层的节点组成10×10的二维拓扑结构矩阵:

▲ SOFM网络结构

▲ SOFM网络结构

第二个数据集合 第二个数据集合SOFM网络结构:输入节点长度5;竞争层神经网络节点组成7×10的二维拓扑结构矩阵。

▲ SOFM网络结构

▲ SOFM网络结构

2.求解过程

求解过程中相关程序参见后面附录中 作业中的程序。

(1) 第一个数据集合

网络在进行随机初始化之后,竞争层的所有神经元与样本集合之间的映射关系如下图所示:

鸭 鸽子 母鸡 斑马 虎 猫 猫 虎 猫鹰 斑马 隼 猫 狼 鸭 狐狸 狐狸 狼 鹅 鹰 猫 猫 马 狐狸 狐狸 母鸡 鸭 猫 狼 马 牛 鸽子 鸭 狗 狐狸 牛 猫 牛 马 斑马 猫 隼 鸭 猫 鹰 鹰 鸭 狗 鹰 狼 虎 鸽子 鸭 鹅 牛 狼 鹅 斑马 猫 虎 马 马 鹅 鹰 鸽子 鹅 猫 猫鹰 鸭 斑马 牛 狮 斑马 狗 马 鹅 鸭 鸭 母鸡 猫 鹰 母鸡 鸽子 鹰 猫 鹅 虎 狐狸 牛 狮 鹅 鸽子 鹅 鹰 隼 狗 狗 狐狸 鹅 猫鹰 猫鹰

上述竞争层神经元 { y i j } i , j ∈ [ 1 , 2 , ⋯   , 10 ] \left\{ {y_{ij} } \right\}_{i,j \in \left[ {1,2, \cdots ,10} \right]} {yij​}i,j∈[1,2,⋯,10]​与训练样本之间 { x i } i ∈ [ 1 , 2 , ⋯   , 16 ] \left\{ {x_i } \right\}_{i \in \left[ {1,2, \cdots ,16} \right]} {xi​}i∈[1,2,⋯,16]​的映射关系:对于任意一个 y i j y_{ij} yij​,在 { x i } \left\{ {x_i } \right\} {xi​}中寻找一个 x i ∗ x_{i*}^{} xi∗​满足: ∥ y i j − x i ∗ ∥ = min ⁡ n ∈ 1 , 2 , ⋯ 16 ∥ y i j − x n ∥ \left\| {y_{ij} - x_{i*} } \right\| = \mathop {\min }\limits_{n \in 1,2, \cdots 16} \left\| {y_{ij} - x_n } \right\| ∥yij​−xi∗​∥=n∈1,2,⋯16min​∥yij​−xn​∥

训练过程:

训练步骤:1000学习速率:从0.6线性递减到0.01收敛半径:从5线性递减到0

训练结果:

鸭 鸽子 隼 猫鹰 猫鹰 鹰 鹰 猫 猫 猫 鸽子 鸽子 鸽子 猫鹰 猫鹰 鹰 狐狸 猫 猫 猫 斑马 马 马 马 狐狸 狐狸 狐狸 狼 狼 狼 斑马 马 马 马 狐狸 狐狸 狐狸 狼 狼 狼 马 马 马 虎 狐狸 狐狸 狐狸 狼 狼 狼 虎 虎 虎 虎 虎 虎 狼 狼 狼 狼 牛 牛 虎 虎 虎 狮 狗 狗 狗 狗 牛 虎 虎 虎 虎 狗 狗 狗 狗 狗 牛 牛 狮 狮 狮 狗 狗 狗 狗 狗 牛 牛 狮 狮 狮 狗 狗 狗 狗 狗

从上述训练结果来看,竞争神经元层对应动物属性具有保序特性。也就是在竞争层中相近的神经元对应的动物的属性(高位空间的位置)也相近。

下图显示了在训练过程中,竞争层对应的动物属性的动态改变过程。

▲ 竞争层在训练过程动态演变

▲ 竞争层在训练过程动态演变

(2) 数据集合2

下图是网络在初始化之后,竞争层神经元对应数据的关系:

A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A

训练过程参数:

训练次数:10000学习速率:从0.6线性递减到0.01学习半径:从5 线性递减到0

下面显示了网络训练完之后,竞争层神经元对应的样本分布。

Step:9900, eta:0.02, R:0 5 F A K H H H G C E Y U K K I J I I I I 2 T S S L K J J I I Q M S S L L J J J J P N M M L L J J J J N N M M M M K J J J N N N M M M K J J J 竞争层的神经元对应的样本分布也同样具有“保序特性”;竞争层的神经元所对应的样本并没有涵盖32个样本全部。因此,反过来,对于32样本映射到7×10的竞争层上,会出现多个样本映射到同一个神经元的情况。反映出聚类结果存在着某些误差。

下面是竞争层网络在训练过程中的演变过程。

 

➤※ 作业中的程序 #!/usr/local/bin/python # -*- coding: gbk -*- #============================================================ # HW24.PY -- by Dr. ZhuoQing 2020-11-24 # # Note: #============================================================ from headm import * import hw24data #x_data = hw24data.body_data x_data = hw24data.train_data #W = random.rand(100, x_data.shape[1]) W = random.rand(70, x_data.shape[1]) #------------------------------------------------------------ def WTA2(x, w): """ Win-Take-All In: x-sample(x1,x2) w-net argument Ret: id-Win ID of w """ dist = array([(x-ww).dot(x-ww) for ww in w]) return list(where(dist==amin(dist)))[0][0] #------------------------------------------------------------ NAME_DIST = 5 def shownet0(w): # Show net result: 0-dimension global x_data outstr = '' for id,ww in enumerate(w): iidd = WTA2(ww, x_data) namestr = hw24data.name_data[iidd] namelen = len(namestr)*2 if namelen


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3