标签:a1 正反 length 传播 再缕 shape w2 w1 np
'''
Author: huajia
Date: 2021-11-22 14:57:01
LastEditors: huajia
LastEditTime: 2021-12-01 12:53:56
Description: 略略略
'''
import numpy as np
import math
import matplotlib.pyplot as plt
def a(x, num, r):
length=x.shape[0]
w1 = np.random.randn(1,length)*0.01
b1 = np.zeros(shape=(w1.shape[0], 1))
w2 = np.random.randn(w1.shape[0], 1)*0.01
b2 = np.zeros(shape=(w2.shape[0], 1))
Y = np.array([[1]])
less = []
for i in range(num):
z1 = np.dot(w1,x)+b1
a1 = np.maximum(z1, 0)
z2 = np.dot(w2,a1)+b2
a2 = 1/(1+np.exp(-z2))
delta = 1e-10
l = -(np.sum((Y*np.log(a2+delta)+(1-Y)*np.log(1-a2+delta))))
if(np.isnan(l)):
exit()
less.append(l)
if(i%1000==0):
print('第%d轮:' %(i),'w1:', w1, 'w2:', w2, 'b1:', b1, 'b2:', b2, 'z1:',
z1, 'z2:', z2, 'a1:', a1, 'a2:', a2, 'less:', l)
dz2 = a2-Y
dw2 = np.dot(dz2,a1.T)/length
db2 = np.sum(dz2,axis=1,keepdims=True)/length
dz1 = np.multiply(np.dot(w2.T, dz2), 1 - np.power(a1, 2))
dw1 = (1/length)*np.dot(dz1,x.T)
db1 = np.sum(dz1,axis=1,keepdims=True)/length
w1 -= r*dw1
b1 -= r*db1
w2 -= r*dw2
b2 -= r*db2
plt.plot(np.arange(0, num), less, label="less")
plt.legend()
plt.show()
x=np.array([[-10000],[1]])
a(x, 10000, 10)
exit()
标签:a1,正反,length,传播,再缕,shape,w2,w1,np 来源: https://www.cnblogs.com/huajiasama/p/15628460.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。