深度学习的问题想请教各位

img


正在学习深度学习 完全看不懂 请指教

同学你好,这就是一个做了矩阵乘法又做激活的,然后重复一遍,最后得到的数值跟y=1做平方损失,得到的损失函数做两次梯度下降就行啊
仅供参考

import numpy as np
def net(X, W): #求神经网络传递输入输出
    Y1 = X.dot([[W[0],W[1],W[2]],[W[3],W[4],W[5]]])
    S = 1/(1+np.exp(-Y1))
    Y2 = S.dot([W[6],W[7],W[8]])
    return 1/(1+np.exp(-Y2))
def loss(Y,Ylabel):
    return 0.5*np.sum((Y-Ylabel)*(Y-Ylabel))#求损失函数(平方损失)
def gradient(W, X, Ylabel, h): #求梯度
    G = np.zeros(len(W));
    W0 = np.zeros(len(W));
    for i in range(len(W)):
        for j in range(len(W)):
            W0[j] = W[j]
        W0[i] = W0[i] + h
        Y0 = net(X,W0)
        Y = net(X,W)
        G[i] = (loss(Y0,Ylabel) - loss(Y, Ylabel))/h #求得梯度
    return G
X0 = np.array([1,-0.5])
W0 = np.array([1.2,2.1,1.5,-0.3,-0.7,0.3,-0.2,0.5,1.3])
Ylabel = 1
Y = net(X0, W0)
h = 1e-5#求梯度的步长值
learningRate = 1 #学习率
print('初始Theta2:') #打印初始Theta2
print(np.array([W[6],W[7],W[8]]))
for i in range(2): #循环两次
    G = gradient(W0, X0, Ylabel, h) #第一次梯度值
    W = W0 - learningRate*G
    Theta2_i = np.array([W[6],W[7],W[8]])
    print('第{}次Theta_2 : '.format(i+1)) #打印第i次Theta2
    print(Theta2_i)
    W0 = W
Theta1_2 = np.array([[W[0],W[1],W[2]],[W[3],W[4],W[5]]])# 第二次的theta1
Theta2_2 = np.array([W[6],W[7],W[8]])# 第二次的theta2
print('\n第二次Theta2 :')
print(Theta2_2)

输出情况:

初始Theta2:
[-0.14804429  0.56023926  1.35200909]
第1次Theta_2 : 
[-0.17266922  0.53168204  1.32733078]
第2次Theta_2 : 
[-0.14804429  0.56023926  1.35200909]

第二次Theta2 :
[-0.14804429  0.56023926  1.35200909]

这个最后两行输出就是第二次的Theta2的数值