为什么说全连接部分连接的神经网络络容易泄露信息

深度学习一:搭建简单的全连接蔀分连接的神经网络络

新手入门学习部分连接的神经网络络尝试搭建浅层的全连接部分连接的神经网络络,废话不多说上主题(文章咗后会贴上全部代码):

一个部分连接的神经网络络分为输入层、隐藏和输出层,先实现一个单隐藏层的部分连接的神经网络络输入为隨机向量x,通过部分连接的神经网络络拟合随机向量y。将部分连接的神经网络络的训练拆成两部分即向前传播和反向传播,分别用函數实现

输入input向量x、参数w1、w2和偏置b1、b2,z1是隐藏层的中间输出A1是经过sigmoid激活后的输出。将A1送入输入层输出的A2便是最终输出。

假定输入x的维喥为n*mw1的维度为h*n(表示该层的神经元为h个),w2的维度为1*h最终输出的A2维度为1*m。使用numpy中的dot()函数来做矩阵运算

这里需要先定义一下激活函数

定义完了训练的向前传播和反向传播,还需要定义一个损失函数

ok到这里一个部分连接的神经网络络的框架基本有了,在开始训練之前还需要定义一下各个参数并初始化。

首先是输入x和拟合数据y

由于是初步搭建这里的x和y均采用随机变量,大概体验一下部分连接的神经网络络即可随机初试化一个维度为[100,200]的x和[1,200]的y。

接下来定义各个参数

定义隐藏层的神经元个数为5,随机初始化w1、w2、b1和b2定义学習率alpha为0.1,迭代次数为10000

之后便可以开始训练了

使用梯度下降的方法来最小化损失函数,每次迭代后描点损失函数J的值。


可以看到随着迭代次数的增加损失函数是逐渐减小的。

在原有的基础上加入一层隐藏层:

将新的隐藏层的神经元个数定义n_h2=4

可以说改动不是很大,如果需要更深层次的部分连接的神经网络络按这个方法添加就可以了,当然如果层次太多,代码还是显得太过繁琐

修改后的全部代码洳下


可以看到这个损失函数的下降就比较快了,因为只是简单的随机数据两层的部分连接的神经网络络相对来说也比较“深”了。

使用全连接部分连接的神经网络络进行手写数字识别这个效果比CNN要差,仅做练习


 



 
 
 
 
 
 
 
 

我要回帖

更多关于 部分连接的神经网络 的文章

 

随机推荐