◎ 说明: 完成作业可以使用你所熟悉的编程语言和平台,比如 C,C++、MATLAB、Python等。作业链接: 2023秋季学期人工神经网络 : http://t.csdnimg.cn/nKe3o

 

01 类问题


一、基本BP算法网络

  下面是分层前馈网络的示意图,分层前馈网络的随机梯度下降算法(BP算法)中,第 n n n 层的权系数 w i j n w_{ij}^n wijn 的调整公式可以表述为:

Δ w i j n = η ( ∑ k = 1 m n δ k n + 1 w j k n + 1 ) y ′ n ⋅ y i n − 1 \Delta w_{ij}^n = \eta \left( {\sum\limits_{k = 1}^{m_n } {\delta _k^{n + 1} w_{jk}^{n + 1} } } \right)y'^n \cdot y_i^{n - 1} Δwijn=η(k=1mnδkn+1wjkn+1)ynyin1

▲ 图1.1.1  具有h+1层的BP网络结构示意图

▲ 图1.1.1 具有h+1层的BP网络结构示意图

1、作业基本要求

  (1) 请写出如下图结构1网络结构算法中,每个神经元权系数的更新公式 Δ w n m \Delta w_{nm} Δwnm 。神经元传递函数可以选择:sigmoid 或者 tanh (双曲正切),同学们自行选择。

f 1 ( x ) = 1 1 + e − x ;          f 2 ( x ) = 1 − e − x 1 + e − x f_1 \left( x \right) = {1 \over {1 + e^{ - x} }};\,\,\,\,\,\,\,\,f_2 \left( x \right) = {{1 - e^{ - x} } \over {1 + e^{ - x} }} f1(x)=1+ex1;f2(x)=1+ex1ex

  (2) 编写程序, 实验结构1网络算法, 求解 XOR 问题。

  注: XOR问题中, 四个样本对应的输入分别为 x ˉ 1 , 2 , 3 , 4 = { [ 1 , 1 ] , [ 1 , − 1 ] , [ − 1 , 1 ] , [ − 1 , − 1 ] } \bar x_{1,2,3,4} = \left\{ {\left[ {1,1} \right],\left[ {1, - 1} \right],\left[ { - 1,1} \right],\left[ { - 1, - 1} \right]} \right\} xˉ1,2,3,4={[1,1],[1,1],[1,1],[1,1]} 对应的期望输出分别为: y 1 , 2 , 3 , 4 = { − 1 , 1 , 1 , − 1 } y_{1,2,3,4} = \left\{ { - 1,1,1, - 1} \right\} y1,2,3,4={1,1,1,1}

▲ 图 两种结构的神经网络

▲ 图 两种结构的神经网络

2、作业选做要求

  (1)请写出 结构2 网络中每个权系数的更新公式;

  (2)编写程序实现结构2,求解 XOR 问题。

二、三类分类问题

1、分类问题

  设计一个前馈分层神经网络, 分别使用 BP 算法 和 RBF 算法, 对于下图中平面坐标系中三类样本进行分类。每一类样本个数都是三个,它们的坐标 ( x 1 , x 2 ) \left( {x_1 ,x_2 } \right) (x1,x2) [ 0 , 1 ] \left[ {0,1} \right] [0,1] 之间的五个离散值分布。

▲ 图1.1.1  三类样本处在坐标系中的位置

▲ 图1.1.1 三类样本处在坐标系中的位置

  下面表格给出了三类样本五组随机分布的位置。可以任意选择一组分布作为训练样本训练网络。

【表1-1 五组三类分类坐标位置】

类别 位置1 位置2 位置3
类别1 (0.75;1.0) (0.5;0.75) (0.25;0.0)
类别2 (0.5;0.0) (0.0;0.0) (1.0;0.75)
类别3 (1.0;1.0) (0.5;0.25) (0.75;0.5)
类别1 (1.0;0.75) (1.0;0.5) (0.25;0.5)
类别2 (0.0;0.0) (0.0;0.75) (0.75;0.0)
类别3 (1.0;1.0) (0.75;1.0) (0.25;0.25)
类别1 (0.25;0.5) (0.0;0.25) (0.75;0.0)
类别2 (0.0;0.0) (0.75;0.5) (1.0;0.5)
类别3 (0.75;0.75) (1.0;0.25) (0.0;0.75)
类别1 (0.0;0.0) (0.25;0.5) (0.75;0.0)
类别2 (0.75;0.5) (0.25;0.25) (0.5;0.25)
类别3 (1.0;0.25) (1.0;1.0) (0.5;0.75)
类别1 (0.75;0.5) (0.0;0.5) (0.5;0.75)
类别2 (0.0;0.75) (1.0;0.5) (0.75;1.0)
类别3 (0.0;0.0) (0.75;0.0) (0.75;0.75)

2、作业基本要求

(1)使用单隐层BP网络进行分类
  • 绘制出网络结构,并给出算法流程描述;
  • 讨论不同隐层节点个数对于分类结果影响,并给出解决 该分类问题最少隐层节点个数;
  • 对每个样本增加噪声,讨论所训练网络的泛化能力。对样本增加噪声就是在两个坐标 ( x 1 , x 2 ) \left( {x_1 ,x_2 } \right) (x1,x2) 上增加随机数,如下所示;

( x 1 + δ 1 , x 2 + δ 2 ) ,      δ 1 , δ 2 ∈ r a n d ( − 0.25 , 0.25 ) \left( {x_1 + \delta _1 ,x_2 + \delta _2 } \right),\,\,\,\,\delta _1 ,\delta _2 \in rand\left( { - 0.25,0.25} \right) (x1+δ1,x2+δ2),δ1,δ2rand(0.25,0.25)

  • 在网络训练过程中,请注意样本坐标进行归一化处理,即将坐标 x 1 , x 2 x_1 ,x_2 x1,x2 经过变换,使其数值分布在 ( − 1 , 1 ) \left( { - 1,1} \right) (1,1) 的对称范围内,对比网络训练效果;
(2)使用RBF网络进行分类
  • 使用正规化RBF网络求解,给出网络参数与仿真结果;
  • 使用广义RBF网络求解,并给出隐层节点个数分别为 2,3,4时对应的分类结构;

3、作业选做要求

(1)训练数据扩充

  选择一种网络(BF,RBF,SVM),对比以下两种数据训练后的网络泛化性能:
  (1)仅仅使用没有增加噪声的九个样本进行训练;
  (2)对样本增加随机噪声,扩充到 180 个样本进行训练。扩充后的样本个数可以自己定义;

三、MNist分类

1、MNIST数据集合

  设计一个BP网络完成MNIST手写体识别。

▲ 图1.2.1  MNIST 数据集合示例

▲ 图1.2.1 MNIST 数据集合示例

2、作业基本要求

  (1)直接图片输入:直接构造784个节点输入,10个节点输出,自行选择中间隐层数量和节点个数,使用50000数据进行训练,10000个测试样本测试。 给出网络结构设计,训练方法以及识别结果。

3、作业选做要求

  (1) 人工提取特征:参照课件上[3-4-4]“手写体识别”中介绍的方法,利用数字的边缘方向图与灰度图的降采样作为特征,使用小的神经网络进行训练。训练样本选择5000,测试样本选择2000。

  (2) 对比和讨论人工提取特征与直接图片输入两种方法的优缺点。

三、Fashion MNist分类(选做)

1、Fashion MNIST数据集合

  设计一个BP网络完成Fashion MNIST手写体识别。 Fashion-MNIST是一组28x28灰度的衣服图像。 它比MNIST更复杂,因此可以更好地表示神经网络的实际性能。

Fashion MNIST/服饰数据集包含70000张灰度图像,其中包含60,000个示例的训练集和10,000个示例的测试集,每个示例都是一个28x28灰度图像,分为以下几类:

▲ 图1.4.1 Fashion MNIST 数据集合

▲ 图1.4.1 Fashion MNIST 数据集合

 

02 归问题


一、Peaks函数逼近

1、设计要求

  使用神经网络逼近 MATLAB中 的 peaks 二维函数。 下面是 peaks 函数的数学表达式。

  下面是 Peaks 函数的图像以及对应的网络样本采样点的分布。

▲ 图2.1.1  Peaks 函数的图像(左)以及训练样本采样点(右)

▲ 图2.1.1 Peaks 函数的图像(左)以及训练样本采样点(右)

2、作业基本要求

  分别设计 BF,RBF 网络完成对 Peaks 函数的逼近。

  (1) 样本数据采样区域在区域内[-4,4]×[-4,4]随机采样。 样本采样的个数自行确定。

  (2) 分别使用BP网络,RBF网络实现上述函数逼近;

  (3) 在BP网络中,讨论训练样本个数与训练样本采样的分布对函数逼近效果的影响。讨论参见课件【3-4-2:函数逼近问题的讨论】。

▲ 图2.1.2 训练样本采集是否集中在函数变化剧烈的区域

▲ 图2.1.2 训练样本采集是否集中在函数变化剧烈的区域

  (4)在RBF网络中,讨论隐层神经元尺度参数对于函数逼近的影响。

▲ 图2.1.3  随着训练次数增加对应的函数逼近曲面

▲ 图2.1.3 随着训练次数增加对应的函数逼近曲面

3、作业选做要求

  (1) 在BP网络中,请对比中间隐层传递函数在使用一下两种函数时对于结果的影响:

▲ 图2.1.3  两种不同的神经元传递函数

▲ 图2.1.3 两种不同的神经元传递函数

 

03 据压缩


一、ASCII字母压缩

1、设计要求

  使用神经网络对于下面 26 个字母进行压缩。

▲ 图3.1.1 字符点阵信息与压缩网络

▲ 图3.1.1 字符点阵信息与压缩网络

2、作业基本要求

  (1) 26个字母的数据文件可以从数据文件ascii8×16.txt文件中获取。其中每一行代表一个字母的数据。字母数据为8×16点阵。也可以直接在作业要求网页上,拷贝如下代码段的字符,与 ascii8×16文件中的数据是一样的。

00000000000000000000000000010000000100000001100000101000001010000010010000111100010001000100001001000010111001110000000000000000
00000000000000000000000011111000010001000100010001000100011110000100010001000010010000100100001001000100111110000000000000000000
00000000000000000000000000111110010000100100001010000000100000001000000010000000100000000100001001000100001110000000000000000000
00000000000000000000000011111000010001000100001001000010010000100100001001000010010000100100001001000100111110000000000000000000
00000000000000000000000011111100010000100100100001001000011110000100100001001000010000000100001001000010111111000000000000000000
00000000000000000000000011111100010000100100100001001000011110000100100001001000010000000100000001000000111000000000000000000000
00000000000000000000000000111100010001000100010010000000100000001000000010001110100001000100010001000100001110000000000000000000
00000000000000000000000011100111010000100100001001000010010000100111111001000010010000100100001001000010111001110000000000000000
00000000000000000000000001111100000100000001000000010000000100000001000000010000000100000001000000010000011111000000000000000000
00000000000000000000000000111110000010000000100000001000000010000000100000001000000010000000100000001000000010001000100011110000
00000000000000000000000011101110010001000100100001010000011100000101000001001000010010000100010001000100111011100000000000000000
00000000000000000000000011100000010000000100000001000000010000000100000001000000010000000100000001000010111111100000000000000000
00000000000000000000000011101110011011000110110001101100011011000101010001010100010101000101010001010100110101100000000000000000
00000000000000000000000011000111011000100110001001010010010100100100101001001010010010100100011001000110111000100000000000000000
00000000000000000000000000111000010001001000001010000010100000101000001010000010100000101000001001000100001110000000000000000000
00000000000000000000000011111100010000100100001001000010010000100111110001000000010000000100000001000000111000000000000000000000
00000000000000000000000000111000010001001000001010000010100000101000001010000010101100101100101001001100001110000000011000000000
00000000000000000000000011111100010000100100001001000010011111000100100001001000010001000100010001000010111000110000000000000000
00000000000000000000000000111110010000100100001001000000001000000001100000000100000000100100001001000010011111000000000000000000
00000000000000000000000011111110100100100001000000010000000100000001000000010000000100000001000000010000001110000000000000000000
00000000000000000000000011100111010000100100001001000010010000100100001001000010010000100100001001000010001111000000000000000000
00000000000000000000000011100111010000100100001001000100001001000010010000101000001010000001100000010000000100000000000000000000
00000000000000000000000011010110100100101001001010010010100100101010101010101010011011000100010001000100010001000000000000000000
00000000000000000000000011100111010000100010010000100100000110000001100000011000001001000010010001000010111001110000000000000000
00000000000000000000000011101110010001000100010000101000001010000001000000010000000100000001000000010000001110000000000000000000
00000000000000000000000001111110100001000000010000001000000010000001000000100000001000000100001001000010111111000000000000000000

asciidim = [
[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,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,1,1,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,1,1,1,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,1,0,0,1,1,1,1,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,1,0,0,1,1,1,1,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,1,1,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,1,1,1,1,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,1,1,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,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],
[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,1,1,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,1,1,1,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,1,1,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,1,1,1,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,0,0,1,1,1,0,1,1,1,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,1,1,1,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,1,0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,0,1,1,0,1,0,1,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,1,0,1,1,0,0,0,1,0,0,1,1,0,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,0,1,1,0,0,1,0,0,0,1,1,0,1,1,1,0,0,0,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,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],
[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,1,1,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,0,1,1,0,0,1,0,1,1,0,0,1,0,1,0,0,1,0,0,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,1,1,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,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,1,1,1,0,0,0,1,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,1,1,1,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,1,1,1,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,1,1,1,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,1,1,1,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,0,1,1,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,1,1,0,1,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,1,1,1,0,1,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,1,0,1,1,1,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,1,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
]

  (2) 讨论网络隐层节点个数与恢复数据误差之间的关系。

  (3)给出隐层节点在15个时,26个字母压缩恢复后的数据图像。

二、图像压缩(选做)

  • 这个题目是选做内容。

1、设计要求

  使用神经网络对于Lena图像进行压缩。对于隐层节点数目在16~256之间选择几个数目,给出图像压缩的效果以及图像压缩MSE。

M S E = 1 N ⋅ ∑ i = 1 N ( I i o r g − I i r e ) 2 MSE = {1 \over N} \cdot \sum\limits_{i = 1}^N {\left( {I_i^{org} - I_i^{re} } \right)^2 } MSE=N1i=1N(IiorgIire)2

  其中 I i o r g I_i^{org} Iiorg 是原始图像灰度, I i r e I_i^{re} Iire 是恢复图像的灰度值。

▲ 图3.2.1  灰白Lena测试图片

▲ 图3.2.1 灰白Lena测试图片

注:Lena的灰度图像可以从网络上寻找并下载。也可以选择其它的图像进行实验。

  注:Lena的灰度图像可以从网络上寻找并下载。也可以选择其它的图像进行实验。下面给出了Lena下载链接:

 

件 ※


一、三类问题数据生成

  下面的 Python 程序完成三类分类问题中,三类样本随机生成的算法,同时生成不同样本集合对应位置动图。

from headm import *

pointdim = [30, 31, 32, 35, 34, 33, 36, 37, 38]
xyc = XYCoor(2, 3, 7, 8, 1, 1)
plotbox = 41

plotgif = PlotGIF()

xrange = list(arange(5)/4)*4
yrange = [xx for x in zip(*[list(arange(5)/4)]*4) for xx in x]
xyrange = [(x,y) for x,y in zip(xrange, yrange)]

printf('类别 位置1 位置2 位置3')
for i in range(5):
    random.shuffle(xyrange)

    for j in range(3):
        printff('类别%d '%(j+1),
                str(xyrange[j*3+0]).replace(' ', '').replace(',', ';') + ' ',
                str(xyrange[j*3+1]).replace(' ', '').replace(',', ';') + ' ',
                str(xyrange[j*3+2]).replace(' ', '').replace(',', ';') + ' ')

    printf('- - - -')

    for j in range(len(pointdim)):
        xd,yd = xyrange[j]

        x,y = xyc.XY2Pos(xd,yd)
        tsplocatedop(pointdim[j], x,y)

    tsprv()
    time.sleep(.05)
    plotgif.appendbox(plotbox)

plotgif.save(r'd:\temp\gif1.gif', 500)

printf('\a')

二、函数显示

  下面 Python 程序绘制 Peaks 函数3D显示。

from headm import *

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import numpy as np

fig = plt.figure()
ax = fig.gca(projection='3d')

X = np.arange(-4, 4, 0.05)
Y = np.arange(-4, 4, 0.05)
X, Y = np.meshgrid(X, Y)

def fxy(x,y):
    e1 = exp(-(x**2+(y+1)**2))
    e2 = exp(-(x**2+y**2))
    e3 = exp(-((x+1)**2+y**2))

    fvalue = 3*(1-x)**2*e1 - 10*(x/5-x**3-y**5)*e2 - 1/3*e3
    return fvalue

Z = fxy(X,Y)

surf = ax.plot_surface(X, Y, Z, cmap=cm.coolwarm,
                       linewidth=0, antialiased=False)

ax.set_zlim(-8, 8)
ax.zaxis.set_major_locator(LinearLocator(10))
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))

fig.colorbar(surf, shrink=0.5, aspect=5)

plt.show()


■ 相关文献链接:

● 相关图表链接:

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐