人工神经网络之连接权重和阈值
2015-12-27 14:25
357 查看
在matlab中通过net.IW和net.LW以及net.B(其中IW,LW,B均可小写)可以查看或者设置连接权重或阈值;对于一个三层结构的BP神经网络(一个输入层+两个神经元层:隐含层和输出层),一开始我与很多人一样不理解net.IW{1,1}为什么是表示由输入层到隐含层的连接权重,而net.LW{2,1}为什么表示由隐含层到输出层的连接权重?
后来通过查看训练好的神经网络的内部结构,终于明白了。在matlab命令行输入help network 再点击末尾doc network 可以查看net的详细描述。在matlab中,net.IW和net.LW都是元胞数组,此处的元胞数组可以理解为一个特殊的数据结构——以数组为元素的数组。假设一个元胞数组为a={[11,12;13,14],[1,2,3;4,5,6];[21,22,23;24,25,26],[31,32;33,34]},那么在matlab命令行窗口输入a{2,1}就可以得到数组[21,22,23;24,25,26]。
net有个结构属性(Architecture Properties)是net.numLayers,它是指神经网络中神经元层的数目(隐含层+输出层),需要注意的是输入层不是神经元层。该值的大小决定了net.IW和net.LW的维数,即net.IW是一个net.numLayers-by-1的元胞数组,而net.LW是一个net.numLayers-by-net.numLayers的元胞数组。为方便理解,下面通过实例说明。图-1是一个训练好的四层结构的BP神经网络,其结构是1-5-2-1,即一个输入层(仅一个变量),两个隐含层(第一个隐含层有5个神经元,第二个隐含层有2个神经元),一个输出层(仅一个神经元):
图-1
对于图-1所示的BP神经网络而言,此时net.numLayers=3,而net.IW和net.LW的结构如下图-2所示:
图-2
其中net.LW{i,j}(i,j=1,2,...,net.numLayers)表示由第j个神经元层到第i个神经元层的连接权重,尤其是net.LW{2,1}表示由第一个神经元层(即该BP神经网络中的第一个隐含层)到第二个神经元层(即该BP神经网络中的第二个隐含层)的连接权重,net.LW{2,1}表示由第二个神经元层(即第二个隐含层)到第三个神经元层(该BP神经网络中的输出层)的连接权重。net.IW{1,i}(i=1,2,...,net.numLayers)表示由输入层到第i个神经元层的连接权重,尤其是net.IW{1,1}(等同于net.IW{1})表示由输入层到第1个神经元层(即第一个隐含层)的连接权重。
对于图-1所示的BP神经网络而言,net.B的结构如下图-3所示:
其中net.B{i}表示第i个神经元层的所有阈值,尤其是net.B{2}表示第2个神经云层 (即该BP神经网络中的第2个隐含层)的阈值。
因此,对于一个三层的BP神经网络而言,net.IW{1,1}表示由输入层到隐含层的连接权重,而net.LW{2,1}表示由隐含层到输出层的连接权重。
后来通过查看训练好的神经网络的内部结构,终于明白了。在matlab命令行输入help network 再点击末尾doc network 可以查看net的详细描述。在matlab中,net.IW和net.LW都是元胞数组,此处的元胞数组可以理解为一个特殊的数据结构——以数组为元素的数组。假设一个元胞数组为a={[11,12;13,14],[1,2,3;4,5,6];[21,22,23;24,25,26],[31,32;33,34]},那么在matlab命令行窗口输入a{2,1}就可以得到数组[21,22,23;24,25,26]。
net有个结构属性(Architecture Properties)是net.numLayers,它是指神经网络中神经元层的数目(隐含层+输出层),需要注意的是输入层不是神经元层。该值的大小决定了net.IW和net.LW的维数,即net.IW是一个net.numLayers-by-1的元胞数组,而net.LW是一个net.numLayers-by-net.numLayers的元胞数组。为方便理解,下面通过实例说明。图-1是一个训练好的四层结构的BP神经网络,其结构是1-5-2-1,即一个输入层(仅一个变量),两个隐含层(第一个隐含层有5个神经元,第二个隐含层有2个神经元),一个输出层(仅一个神经元):
图-1
对于图-1所示的BP神经网络而言,此时net.numLayers=3,而net.IW和net.LW的结构如下图-2所示:
图-2
其中net.LW{i,j}(i,j=1,2,...,net.numLayers)表示由第j个神经元层到第i个神经元层的连接权重,尤其是net.LW{2,1}表示由第一个神经元层(即该BP神经网络中的第一个隐含层)到第二个神经元层(即该BP神经网络中的第二个隐含层)的连接权重,net.LW{2,1}表示由第二个神经元层(即第二个隐含层)到第三个神经元层(该BP神经网络中的输出层)的连接权重。net.IW{1,i}(i=1,2,...,net.numLayers)表示由输入层到第i个神经元层的连接权重,尤其是net.IW{1,1}(等同于net.IW{1})表示由输入层到第1个神经元层(即第一个隐含层)的连接权重。
对于图-1所示的BP神经网络而言,net.B的结构如下图-3所示:
其中net.B{i}表示第i个神经元层的所有阈值,尤其是net.B{2}表示第2个神经云层 (即该BP神经网络中的第2个隐含层)的阈值。
因此,对于一个三层的BP神经网络而言,net.IW{1,1}表示由输入层到隐含层的连接权重,而net.LW{2,1}表示由隐含层到输出层的连接权重。
相关文章推荐
- 解析在main函数之前调用函数以及对设计的作用详解
- java和matlab画多边形闭合折线图示例讲解
- C#调用Matlab生成的dll方法的详细说明
- 从java中调用matlab详细介绍
- 反向传播(Backpropagation)算法的数学原理
- 稀疏自动编码器 (Sparse Autoencoder)
- VC++与Matlab混合编程的快速实现
- 了解一下
- Matlab 矩阵运算
- matlab与opencv部分函数的对照
- matlab神经网络工具箱创建神经网络
- Matlab
- MATLAB 入门教程
- matlab函数_连通区域
- MATLAB中函数模式和命令模式的区别
- MATLAB 添加自定义的模块到simulink库浏览器
- MATLAB for Mac使编辑器支持中文
- [转]matlab中plot用法
- 初学数模-MATLAB Quick Start! Part I
- 初学数模-MATLAB Quick Start! Part II