前向传播,求图片的激活函数sigmoid
![手绘一张28x28像素点的数字9图片](https://i-blog.csdnimg.cn/blog_migrate/0150eed02a91a39ce95dfbc674a321db.png)
对于这个28x28=784个像素的输入值,如果我们如图有2个隐藏层每层16个神经元,那么第1层每个神经元需要784个权重w,共784x16=12544个w,以及16个偏置b;第2层需要16x16=256个权重w和16个偏置b;第三层需要10x16=160个权重和10个偏置b;这些加在一起是:12544+256+160+16+16+10=13002
import cv2
import numpy as np
def sigmoid(inx):
return 1.0 / (1 + np.exp(-inx))
img9 = np.array(cv2.imread("9.png",0),dtype="float64")
#l0层(输入层) (16,784) * (784,)
l0 = img9.reshape((-1,))
w0 = np.random.normal(0,1,(16,784))
b0 = np.random.normal(0,1,(16,))
l1 = w0.dot(l0) + b0
l1 = sigmoid(l1)
#l1层(隐藏层) (16,16) * (16,)
w1 = np.random.normal(0,1,(16,16))
b1 = np.random.normal(0,1,(16,))
l2 = w1.dot(l1) + b1
l2 = sigmoid(l2)
#l2层(隐藏层) (10,16) * (16,)
w2 = np.random.normal(0,1,(10,16))
b2 = np.random.normal(0,1,(10,))
l3 = w2.dot(l2) + b2
#l3层(输出层)
l3 = sigmoid(l3) #激活函数
print(l3)
print(l3.shape)