成本函数神经网络

时间:2019-02-20 15:42:34

标签: python neural-network data-science

以下代码是我的神经网络(1个隐藏层)的实现,试图根据输入数据预测一些数字。

  • 输入节点数:11
  • 隐藏层中的节点数:11
  • 输出层中的节点数:1
  • m:培训示例数,此处= 4527
  • X[11, m]矩阵
  • y[1, m]矩阵
  • w1:从输入层到隐藏层的权重
  • b1:从输入层到隐藏层的偏差矢量
  • w2:从隐藏层到输出层的权重
  • b2:从隐藏层到输出层的偏差矢量
  • alpha:学习率
  • ite:迭代次数,此处= 10000

由于我试图预测连续值输出,因此在输入层中使用了Sigmoid函数,在输出层中使用了identity函数

def propagate(X,y,w1,b1,w2,b2,alpha,ite):
    assert(X.shape[0] == 11)
    assert(y.shape[0] == 1)
    assert(X.shape[1] == y.shape[1])
    m = X.shape[1]
    J = np.zeros(shape=(ite,1))
    iteNo = np.zeros(shape=(ite,1))
    for i in range(1,ite+1):
        z1 = np.dot(w1,X) + b1
        a1 = sigmoid(z1)
        z2 = np.dot(w2,a1) + b2

        dz2 = (z2-y)/m
        dw2 = np.dot(dz2,a1.T)
        db2 = np.sum(dz2, axis=1, keepdims=True)
        dz1 = np.dot(w2.T,dz2)*derivative_of_sigmoid(z1)
        dw1 = np.dot(dz1,X.T)
        db1 = np.sum(dz1, axis=1, keepdims=True)

        w2 = w2 - (alpha*dw2)
        b2 = b2 - (alpha*db2)
        w1 = w1 - (alpha*dw1)
        b1 = b1 - (alpha*db1)

        iteNo[i-1] = i
        J[i-1] = np.dot((z2-y),(z2-y).T)/(2*m)

    print(z2)    
    return w1,b1,w2,b2,iteNo,J

我已经尝试了两种方法(使用功能归一化和缩放功能以及不使用功能),但是我的成本函数相对于迭代次数变化如下(图J)。 On x-axis: Number of iteration, On y-axis: Error * 10^12

请帮助!

0 个答案:

没有答案