CNN(卷积神经网络)提取图像特征
·
# 文中简单的 反向传播代码 python版本
import numpy as np
def sigmoid(x): #激活函数,将得到的值归一化在某一范围内
return 1/(1+np.exp(-x)) #sigmoid函数: 把一个实数压缩至0到1之间。当z是非常大的正数时,g(z)会趋近于1,而z是非常小的负数时,则g(z)会趋近于0。
input1 = np.array([[0.35],[0.9],[0.58],[0.78]])
w1 = np.random.rand(3,4) # w1 随机初始权重 y=wx+b 利用梯度下降法优化权重
print('w1:',w1) # 通过调整 w使得一类x运算完之后都是0,另外一类x运算完都是1
w2 = np.random.rand(2,3)
print('w2:',w2)
real = np.array([[0.5],[0.7]])
for i in range(100):
output1 = sigmoid(np.dot(w1,input1)) #中间层
output2 = sigmoid(np.dot(w2,output1)) #输出层
cost = np.square(real-output2)/2 #计算误差
dalta2 = output2*(1-output2)*(real-output2) #梯度
dalta1 = output1*(1-output1)*w2.T.dot(dalta2) #梯度
w2 = w2+dalta2.dot(output1.T) #更新w2
w1 = w1+dalta1.dot(input1.T) #更新w1
print(output1)
print(output2)
print(cost)

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)