Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在随机梯度下降模式下,是什么导致梯度和总误差增加?_Python_Numpy_Deep Learning_Neural Network_Mlp - Fatal编程技术网

Python 在随机梯度下降模式下,是什么导致梯度和总误差增加?

Python 在随机梯度下降模式下,是什么导致梯度和总误差增加?,python,numpy,deep-learning,neural-network,mlp,Python,Numpy,Deep Learning,Neural Network,Mlp,我试图理解神经网络学习背后的直觉。我理解它背后的数学原理,并且已经试着用分析的方法来解决它。在用Python从头开始编写多层感知器时,我面临着总错误增加的问题。我已经评论了我的代码,解释了操作,还发布了三种不同培训方案的结果输出和图表。此外,我尽可能使用NumPy向量运算来减少代码 摘要: 主要方法包含使用随机梯度下降方法生成二进制计算数据的代码,以及密集类对象及其训练模型的方法 网络有三个层次;输入(4个节点)、隐藏层(6个节点)和输出(2个节点) 密集类是网络中一层的实现 密集类表示ML

我试图理解神经网络学习背后的直觉。我理解它背后的数学原理,并且已经试着用分析的方法来解决它。在用
Python
从头开始编写多层感知器时,我面临着总错误增加的问题。我已经评论了我的代码,解释了操作,还发布了三种不同培训方案的结果输出和图表。此外,我尽可能使用
NumPy
向量运算来减少代码

摘要:

  • 主要方法包含使用随机梯度下降方法生成二进制计算数据的代码,以及密集类对象及其训练模型的方法
  • 网络有三个层次;输入(4个节点)、隐藏层(6个节点)和输出(2个节点)
  • 密集类是网络中一层的实现
密集类表示
MLP网络中的一个层

包含以下内容:

  • 构造函数:随机初始化权重和偏差
  • 乙状结肠法:激活层的线性组合或激活电位
  • d_sigmoid方法:求sigmoid的第一个微分的值
  • 前向传递方法:执行层的前向传播
  • 反向传递方法:执行层反向传播的方法
#为向量操作导入numpy
将numpy作为np导入
np.随机种子(78)
类密度()
def_uuuinit_uuu(自、n_输入、n_节点):
#与所有n_节点关联的n_输入和突触输入的权重
#权重矩阵中的每一列都是与一个神经元相关联的权重向量
self.weights=np.random.uniform(低=0,高=1,大小=n个输入*n个节点)。重塑(n个输入,n个节点)
#与每个神经元、形状相关的偏差(1,n_节点)
#有n_节点列,每个节点代表与层中一个神经元相关的偏差
#这个一维数组将被添加到所有神经元的线性组合中
#假设与偏差相关的突触连接为“1”
自偏压=np.ones(n_节点)
def乙状结肠(自身):
#激活激活电位->ndarray
#将激活的ndarry保存到输出,因为我稍后需要它
自我输出=1/(1+np.exp(-自我激活电位))
返回自我输出
def d_乙状结肠(自身):
#激活电位的推导->Ndaray(对于所有神经元,激活电位的第一微分尾激活函数值)
#将用于局部坡度计算
#形状的向量值(n_节点)
返回自输出*(1-自输出)
def前进_通道(自身,输入):
#计算电流层神经元的激活电位->Ndaray
#这是输入乘以权重加上一个偏差
#将其存储到激活电位
自激活电位=np点(自权重T,输入)+自偏压
#通过调用激活激活电位的sigmoid()返回层的输出
返回self.sigmoid()
def后向传递(自我、学习速率、输入到层、目标、,
上一个位置梯度=[],上一个权重=[]):
#此方法中的术语“前一层”是调用此方法的当前层旁边的一个lyer,因为此bakward信号从输出层传输到输入层
#input_to_layer:表示调用此方法的当前层的输入数组
#目标:表示目标经过一次热编码后的数据数组
#prev_loc_grads:当前层旁边的层的局部梯度,我称之为previous,因为这是反向传播,流从输出层传播到输入层
#prev_weights:当前层旁边的层的权重矩阵,我称之为previous,因为信号流是反向的
#没有先前的局部渐变意味着使用输出层对象调用backwardpass
如果不是len(上一级):
#在输出层,每个节点的局部梯度是该节点处的误差*激活函数的导数
#节点处的错误为(预测-实际值)
#下一行对两个数组(预测数组和期望数组)执行元素相减
self.error\u位于\u end\u节点=self.outputs-目标
#计算局部梯度
self.loc_渐变=self.error_在_端点_节点处*self.d_sigmoid()
其他:
#隐藏层中节点的局部梯度为(激活的导数*所有的总和(前一层神经元的局部梯度*与这些神经元的突触连接相关的wight)
#计算所有的总和(前一层神经元的局部梯度*与这些神经元的突触连接相关的wights)
温度=np.零(上一个权重形状[0])
对于范围内的i(先前位置梯度尺寸):
温度+=上一个位置梯度[i]*上一个权重[:,i]
#隐藏层的局部梯度
self.loc_梯度=self.d_sigmoid()*温度
#根据学习速率、局部梯度和层的输入更新权重
self.weights=self.weights+(学习速率*np.outer(输入到层,self.loc\u梯度))
#_到_层的输入被定义为偏差(概念上)乘以固定激活为1的神经元的输入
自偏差=自偏差+学习率*自定位梯度
返回自权重、自偏差
包含训练循环和训练数据的主代码:

从sklearn.dataset导入mak
In Main .. Starting ..
Training Data: (X) :  [[-0.26390333 -0.12430637 -0.38741338  0.20075948]
 [ 0.63580037 -1.05223163 -0.58551008  0.68911107]
 [-0.54448011  0.08334418 -0.4174701   0.11937366]
 [ 0.22123838 -0.54513245 -0.40486294  0.39508491]
 [-0.3489578  -0.2067747  -0.55992358  0.30225496]
 [ 0.46346633  0.29702914  0.76883225 -0.42087526]
 [ 0.05631264  0.04373764  0.10200898 -0.05777301]
 [ 0.19738736 -0.26007568 -0.10694419  0.15615838]
 [ 0.12548086 -0.17220663 -0.07570972  0.10523554]
 [-0.52398487  1.          0.63178402 -0.68315832]]
Taraining Data: (y):  [0 1 0 1 0 1 1 1 0 0]
Targets after One Hot Encoding: [[1. 0.]
 [0. 1.]
 [1. 0.]
 [0. 1.]
 [1. 0.]
 [0. 1.]
 [0. 1.]
 [0. 1.]
 [1. 0.]
 [1. 0.]]
----------------------------Layer 1-------------------------
Created Only Hidden Layer: N_nodes: 6 , N_inputs: 4
----------------------------Layer 2-------------------------
Created Output Layer: N_nodes: 2 , N_inputs: 6
--------------------------Epoch: 1-------------------------
In Main .. Starting ..
Training Data: (X) :  [[-0.26390333 -0.12430637 -0.38741338  0.20075948]
 [ 0.63580037 -1.05223163 -0.58551008  0.68911107]
 [-0.54448011  0.08334418 -0.4174701   0.11937366]
 [ 0.22123838 -0.54513245 -0.40486294  0.39508491]
 [-0.3489578  -0.2067747  -0.55992358  0.30225496]
 [ 0.46346633  0.29702914  0.76883225 -0.42087526]
 [ 0.05631264  0.04373764  0.10200898 -0.05777301]
 [ 0.19738736 -0.26007568 -0.10694419  0.15615838]
 [ 0.12548086 -0.17220663 -0.07570972  0.10523554]
 [-0.52398487  1.          0.63178402 -0.68315832]]
Taraining Data: (y):  [0 1 0 1 0 1 1 1 0 0]
Targets after One Hot Encoding: [[1. 0.]
 [0. 1.]
 [1. 0.]
 [0. 1.]
 [1. 0.]
 [0. 1.]
 [0. 1.]
 [0. 1.]
 [1. 0.]
 [1. 0.]]
----------------------------Layer 1-------------------------
Created Only Hidden Layer: N_nodes: 6 , N_inputs: 4
----------------------------Layer 2-------------------------
Created Output Layer: N_nodes: 2 , N_inputs: 6
--------------------------Epoch: 1-------------------------

--------------------------Epoch: 2-------------------------

--------------------------Epoch: 3-------------------------

--------------------------Epoch: 4-------------------------

--------------------------Epoch: 5-------------------------

--------------------------Epoch: 6-------------------------

--------------------------Epoch: 7-------------------------

--------------------------Epoch: 8-------------------------

--------------------------Epoch: 9-------------------------

--------------------------Epoch: 10-------------------------
In Main .. Starting ..
Training Data: (X) :  [[ 0.10845729  0.03110484 -0.10935314 -0.01435112]
 [-0.27863109 -0.17048214 -0.04769305  0.04802046]
 [-0.10521553 -0.07933533 -0.07228399  0.01997508]
 ...
 [-0.25583767 -0.24504791 -0.36494096  0.0549903 ]
 [ 0.06933997 -0.29438308 -1.21018002  0.02951967]
 [-0.02084834  0.06847175  0.29115171 -0.00640819]]
Taraining Data: (y):  [1 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 1 0 1 1 1 0 1 1 1 0 1 0 0 1 1 0 0 1 1 1 0
 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 0 0 0 0 1 1 0 1 0 1 0 1 1 1 0
 1 0 1 1 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 1 1 0 0 1 0 1
 0 0 0 1 0 1 1 0 1 1 0 1 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 1 1 1 1 1 0 0 0 0
 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1 0 1 0 0 0 0 1 1 1 1 0 0 1 0 0 1 1
 1 0 1 1 0 1 0 1 1 0 0 0 1 1 0 1 0 1 0 1 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0
 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 1 0 0 1 1
 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 1 1 1 1 1 1 0 1 0 1 0 0 1 0 1 1 1 1 0 1 0 0
 1 1 0 1 0 1 1 1 0 0 1 1 1 0 1 0 0 0 0 1 1 1 1 1 1 0 0 1 0 1 1 0 1 0 1 1 0
 1 0 0 1 1 1 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 1 1 1 1 0 0 0 1 0 0
 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0 1 1 0 1 1 1 0 0 0 0 0 1 1 0 1 1 0 1 0 0
 1 1 0 0 1 1 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 1 0 0 1 1 1 0 1 1 0 1 1 0 1 1 0
 1 1 0 0 1 0 1 1 0 0 0 0 0 1 0 1 0 1 1 1 0 0 0 0 1 0 1 0 1 1 1 1 0 1 0 0 1
 0 0 0 1 0 0 1 1 0 1 0 0 0 1 0 1 1 1 0 1 1 1 1 1 0 1 1 0 0 1 1 0 0 0 1 0 1
 0 0 1 1 0 0 0 0 0 0 1 1 0 1 1 0 1 1 1 1 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1
 1 1 1 1 1 0 1 0 1 0 0 1 1 0 1 0 0 0 0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 1 0
 0 1 1 1 1 0 1 0 0 1 1 0 1 1 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 1 1 1 1 1 0
 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 1 0 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0
 1 0 1 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 1 1 0 0 0 1 0 0 0 1 1 0 0 0 1 1 0 1 1
 1 1 1 1 1 1 1 0 1 0 0 1 0 0 1 1 0 0 1 1 1 1 0 1 0 0 0 0 0 1 1 1 1 0 0 1 0
 1 0 1 0 1 0 0 1 0 0 0 1 1 1 0 1 0 0 1 1 1 1 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0
 1 0 0 1 1 0 1 1 0 0 0 0 1 1 0 1 0 1 0 1 1 1 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0
 0 1 0 0 1 0 0 0 1 1 1 0 0 1 0 0 0 1 1 1 0 0 0 1 0 0 1 0 1 0 0 1 0 1 1 1 0
 0 1 1 0 0 1 0 0 0 1 1 1 0 1 0 1 1 0 0 1 1 1 0 0 0 1 1 1 1 1 0 0 0 1 1 0 1
 0 1 0 0 0 1 1 1 0 0 1 1 1 0 1 0 1 1 0 0 0 0 0 0 1 0 1 0 1 0 1 1 1 0 1 1 1
 1 1 0 1 1 0 0 1 0 1 0 1 1 1 0 1 0 0 0 0 0 1 0 1 1 1 1 0 0 1 0 1 1 0 0 1 1
 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0 1 0 1 1 0 1 0 1 1 1 1 0 0
 0]
Targets after One Hot Encoding: [[0. 1.]
 [1. 0.]
 [1. 0.]
 ...
 [1. 0.]
 [1. 0.]
 [1. 0.]]
----------------------------Layer 1-------------------------
Created Only Hidden Layer: N_nodes: 6 , N_inputs: 4
----------------------------Layer 2-------------------------
Created Output Layer: N_nodes: 2 , N_inputs: 6
--------------------------Epoch: 1------------------------- 

--------------------------Epoch: 2------------------------- 

--------------------------Epoch: 3------------------------- 

--------------------------Epoch: 4------------------------- 

--------------------------Epoch: 5------------------------- 

--------------------------Epoch: 6------------------------- 

--------------------------Epoch: 7------------------------- 

--------------------------Epoch: 8------------------------- 

--------------------------Epoch: 9------------------------- 

--------------------------Epoch: 10------------------------- 

--------------------------Epoch: 11------------------------- 

--------------------------Epoch: 12------------------------- 

--------------------------Epoch: 13------------------------- 

--------------------------Epoch: 14------------------------- 

--------------------------Epoch: 15------------------------- 

--------------------------Epoch: 16------------------------- 

--------------------------Epoch: 17------------------------- 

--------------------------Epoch: 18------------------------- 

--------------------------Epoch: 19------------------------- 

--------------------------Epoch: 20------------------------- 

--------------------------Epoch: 21------------------------- 

--------------------------Epoch: 22------------------------- 

--------------------------Epoch: 23------------------------- 

--------------------------Epoch: 24------------------------- 

--------------------------Epoch: 25------------------------- 

--------------------------Epoch: 26------------------------- 

--------------------------Epoch: 27------------------------- 

--------------------------Epoch: 28------------------------- 

--------------------------Epoch: 29------------------------- 

--------------------------Epoch: 30------------------------- 

--------------------------Epoch: 31------------------------- 

--------------------------Epoch: 32------------------------- 

--------------------------Epoch: 33------------------------- 

--------------------------Epoch: 34------------------------- 

--------------------------Epoch: 35------------------------- 

--------------------------Epoch: 36------------------------- 

--------------------------Epoch: 37------------------------- 

--------------------------Epoch: 38------------------------- 

--------------------------Epoch: 39------------------------- 

--------------------------Epoch: 40------------------------- 

--------------------------Epoch: 41------------------------- 

--------------------------Epoch: 42------------------------- 

--------------------------Epoch: 43------------------------- 

--------------------------Epoch: 44------------------------- 

--------------------------Epoch: 45------------------------- 

--------------------------Epoch: 46------------------------- 

--------------------------Epoch: 47------------------------- 

--------------------------Epoch: 48------------------------- 

--------------------------Epoch: 49------------------------- 

--------------------------Epoch: 50-------------------------