Matlab神经网络基础

一、newp

设计一

newp函数用于生成一个感知器神经网络,以解决线性可分的分类问题,后两个输入参数是可选的,如果采用默认值,可以简单地采用 n e t = n e w p ( P , T ) net=newp(P,T) net=newp(P,T)的形式来调用。

net=newp(P, T, TF, LF);
  • P P P P P P是一个 R × 2 R \times 2 R×2矩阵,矩阵的行数R等于感知器网络中输入向量的维数。矩阵的每一行表示输入向量每个分量的取值范围。如 P = [ − 1 1 0 1 ] P=\begin{bmatrix} -1&1\\ 0&1\end{bmatrix} P=[1011],表示输入向量是2维向量 [ x 1 , x 2 ] [x_1,x_2] [x1,x2],且 − 1 ≤ x 1 ≤ 1 -1 \leq x_1 \leq 1 1x11 0 ≤ x 2 ≤ 1 0 \leq x_2 \leq 1 0x21。因此,矩阵 R R R的第二列数字必须大于等于第一类数字,否则系统将会报错。
  • T T T:表示输出节点的个数,标量。
  • T F TF TF:传输函数,可取值为 h a r d l i m hardlim hardlim h a r d l i m s hardlims hardlims,默认值为 h a r d l i m hardlim hardlim
  • L F LF LF:学习函数,可取值为 l e a r n p learnp learnp l e a r n p n learnpn learnpn,默认值为 l e a r n p learnp learnp
  • n e t net net:函数返回创建好的感知器网络。

二、newff

设计二

net = newff(P, T, S)
  • P: R × Q 1 R \times Q1 R×Q1矩阵,表示创建的神经网络中,输入层有R个神经元。每行对应一个神经元输入数据的典型值,实际应用中常取其最大最小值。
  • T: S N × Q 2 SN \times Q2 SN×Q2矩阵,表示创建的网络有SN个输出层节点,每行是输出值的典型值。
  • S:标量或向量,用于指定隐含层神经元个数,若隐含层多于一层,则写成行向量的形式。
  • net:返回一个 l e n g t h ( S ) + 1 length(S)+1 length(S)+1层(不包括输入层)的BP网络。

三、train

训练

train函数用于训练创建好的感知器网络,事实上,train函数可以训练所有神经网络(径向基函数等不需要训练的除外)。

[net, tr] = train(net, P, T, Pi, Ai)
  • net:需要训练的神经网络,对于感知器,net是newp函数的输出。train根据 n e t . t r a i n F c n net.trainFcn net.trainFcn n e t . t r a i n P a r a m net.trainParam net.trainParam进行训练。
  • P:网络输入。P是 R × Q R \times Q R×Q输入矩阵,每一列是一个输入向量,R应等于网络的输入节点个数,共有Q个训练输入向量。
  • T:网络期望输出。这个参数是可选的对于无监督学习,不需要期望输出。T是 S × Q S \times Q S×Q矩阵,每一列是一个输出向量,S应等于输出节点个数,共有Q个输出,Q值应与输入向量的个数相等。T默认值为零。
  • Pi:初始输入延迟,默认值为零。
  • Ai:初始的层延迟,默认值为零。
  • net:训练好的网络。
  • tr:训练记录,包括训练的步数epoch和性能perf。

四、sim

仿真

sim函数用于仿真一个神经网络。

[Y, Pf, Af] = sim(net, P, Pi, Ai)
  • net:训练好的神经网络。
  • P:网络的输入。若P是矩阵,则每一列是一个输入向量,列数等于输入向量的个数。
  • Pi:网络的初始输入延迟,默认值为零。
  • Ai:网络的初始层延迟,默认值为零。
  • Y:网络对输入P的实际输出。
  • Pf:最终输出延迟。
  • Af:最终的层延迟。

五、设计神经网络的流程

(1)设计神经网络
newp:输入向量的维数,输入向量每个分量的取值范围,输出节点的个数,传输函数,学习函数,最终得到创建好的感知器网络
newff:输入层的神经元个数,每一个神经元输入数据的典型值,输出层结点的个数,隐含层神经元个数,最终得到一个BP网络

(2)训练神经网络
设计好的神经网络,输入向量(隐含输入节点的个数,输入向量的个数),期望输出向量(隐含输出节点的个数,输出向量的个数,输出向量应与输入向量的个数相等),最终得到训练好的神经网络,以及训练记录(包括训练的步数epoch和性能perf)

(3)仿真
训练好的神经网络,输入向量(隐含输入向量的个数),初始输入延迟与初始层延迟,最终得到输出、最终输出延迟与最终的层延迟

六、神经网络工具箱

Matlab神经网络基础_第1张图片

1、Neural Network

该部分展示了神经网络的结构,从结构图中可以看出该网络有三个隐含层,神经元个数分别为9、8、7

2、Algorithms

Data Division:该网络采用随机划分的方法将数据集划分为training set、validation set、test set
Training:该网络采用Levenberg–Marquardt算法进行训练
Performance:该网络采用均方误差算法计算误差
Calculations:该网络保存为mex格式

3、Progress

Epoch:该网络允许的迭代次数最大为1000,实际迭代5次
Time:该网络训练时长为3秒
Performance:该网络最大误差为0.475,目标误差为0.001,实际误差为0.00052,可在Plots中的Performance中详细查看
Gradient:该网络的最大梯度为1.91,梯度阈值为1e-7,实际梯度为0.033。可在Plots中的Training State中详细查看
Mu:该网络所使用Levenberg-Marquardt算法中的阻尼因子最小值为0.001,阈值为1e-10,实际值为1e-6,Mu值越大意味着算法收敛效果越好。可在Plots中的Training State中详细查看
Validation Checks:该网络的泛化能力检查标准,实际值为0表示在训练过程中误差在持续降低,若连续6次训练误差无法降低,则结束训练任务。可在Plots中的Training State中详细查看

注 意 , 1 e − 7 = 1 × 1 0 − 7 注意,1e-7=1 \times 10^{-7} 1e7=1×107

4、Plots

Performance:该网络训练过程中的误差变换可视化
Training State:该网络训练过程中的梯度、Mu因子和泛化能力变换等信息的可视化
Regression:该网络训练集、验证集、测试集的回归能力可视化
Plot Interval:图中横坐标的刻度

七、基础概念

Epoch(时期):将所有训练样本训练一次的过程。
Batch(批 / 一批样本):将整个训练样本分成若干个Batch。
Batch_Size(批大小):每批样本的大小。
Iteration(一次迭代):训练一个Batch就是一次Iteration。

示例

mnist数据集有60000张图片作为训练数据,10000张图片作为测试数据。假设现在选择Batch_Size=100对模型进行训练。迭代30000次。

  • 每个Epoch要训练的图片数量:60000(训练集上的所有图像)
  • 训练集具有的Batch个数: 60000 / 100 = 600 60000/100=600 60000/100=600
  • 每个Epoch需要完成的Batch个数:600
  • 每个Epoch具有的Iteration个数:600(完成一个Batch训练,相当于参数迭代一次)
  • 每个Epoch发生模型权重更新的次数:600
  • 训练10个Epoch后,模型权重更新的次数: 600 × 10 = 6000 600 \times 10=6000 600×10=6000
  • 不同Epoch的训练,其实用的是同一个训练集的数据。第一个Epoch和第10个Epoch虽然用的都是训练集的60000张图片,但是对模型权重更新值却是完全不同的。因为不同Epoch的模型处于代价函数空间上的不同位置,模型的训练越靠后,越靠近谷底,其代价越小
  • 总共完成30000次迭代,相当于完成了 30000 / 600 = 50 30000/600=50 30000/600=50个Epoch,即训练了50次

你可能感兴趣的:(人工神经网络,人工神经网络)