连接网络的原理,连接的原理是,连接网络的原理,连接的原理区别

  连接网络的原理,连接的原理是,连接网络的原理,连接的原理区别

  全连接网络原理上一期介绍了只有一个隐层的浅层全连接网络,本期介绍了更通用的深层全连接网络。我建议先看上一期的内容,对理解会更有帮助。最后一期的链接是:

  https://blog.csdn.net/Iseno_V/article/details/102941210

  推导部分还是截图的形式。如果你需要源文件,请给我留言。

  1.网络结构图下图是一个四层全连接网络,有2个分类问题。

  2.原则2.1参数一致的详细解释

  2.2正向传播过程

  2.3反向传播过程

  2.4算法总结

  3.代码实施整个全连接网络的源代码架构如下图所示:python代码实现为:

  #-*-编码:UTF-8-*- 创建于2019年11月13日19:59:16 @作者:iseno _ v import numpy as NP #生成训练和测试数据#数据是一个二维点,以半径为5的圆为原点作为分界线,用于区分正负样本#参数:m是数据集大小#返回值:返回数据和标记def createdata(m):x1=NP . zeros([2,int (m/2)]) int(m/2)]) L1=0 L2=0而L1m/2: a=np.random.rand(1,1)*10 b=np.random.rand(1,1)*10如果a**2 b**2=25: X1[0,L1]=a X1[1,L1]=b L1=1而L2m/2: a=np.random.rand(1,1)*10 b=NP . rand(1,1)* 10如果a**2 b**2 EXP(-z))# sigmoid函数的导数def dgdz (z): returnnp。EXP (-z)/((1NP。EXP (-z)) * * 2) #迭代次数I=100000#网络层数(不包括输入层)L=5#数据集大小m=10000#每层神经元数(包括输入层)n=np.array([2,3,5,4,2,1])#初始化网络参数W=[1]#W没有意义,也就是说输入层没有参数W,也就是说输入层没有参数b,这里只要给I一个数值占位符在range (1,L1): W. append (NP。Random.rand (n [I],n[I-1])* 0.001 b . append(NP。Random.rand (n [I],1)*0.001) #初始化训练数据和测试数据x _ train,y _ train=createdata (m) x _ test,y _ test=createdata (m) #对range(I)中的I开始迭代:#正向传播过程初始化Z=[1]#Z的第一个元素是无意义的,也就是说输入层没有参数Z,这里只要给一个数值占位符A=[X_train] #对range (1, L1): ZJ=np.dot (w [j],a[j-1])b[j]aj=g(ZJ)z . append(ZJ)a . append(aj)if(I 1)00==0:j=-(NP . dot(y _ train,np.log(A[L])。 T) (np.dot((1-Y_train),NP.log (1-A [L])。T))/m print (step=% d,cost function=% .14f% (i1,j)) #反向传播过程初始化da=[0]*(L1)da[L]=(-NP . dot)1.0/(1-a[L])。t))/m #范围内j的反向传播过程(l,0,-1): dzj=np.multiply (da [j],dgdz (z [j])) dwj=np.dot (dzj,a keep dims=true)da[j-1]=NP . dot(w[j].t,dzj)w[j]=w[j]-alpha A * dwjb[j]=B[j]-alpha A * dbj #测试过程A=[x _ test]for A[j-1])B[j]aj=g(ZJ)A . append(aj)Y _ hat=(A[L]0.5)。astype(NP . int)rate=1-NP . sum(NP . ABS(Y _ test-Y _ hat))/(m)print( accuracy={ 0 } 。格式(汇率))代码运行结果:

  最高分类准确率达96%,效果尚可。经过多次实验,发现大多数情况下分类准确率可以达到93%以上。算法分析:

  因为使用了sigmoid函数,当参数过大时,梯度会变小,整个网络的收敛速度会变慢。这个问题可以考虑使用ReLU激活函数;或者加上batch-normalization层(BN层)(通过一些变换将数据归一化到0附近,使渐变重新出现);或者使用变化的学习率(即迭代次数少的时候,使用较高的学习率,随着迭代次数的增加,学习率降低,这样梯度前期下降快,后期下降细)。后期会慢慢更新相关内容。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: