用numpy实现单层神经网络进行图片分类
实验所用的数据集为64x64的图片,我们要做的是搭建一层神经网络识别图片中有没有猫
单层神经网络结构如下:
图片大小为(64,64,3)需要将其转成(1,64x64x3)故W的大小为(1,12288)
在此网络中
前向计算:
Z = W X + b Z = WX + b Z=WX+b
y h a t = s i g m o i d ( Z ) yhat = sigmoid(Z) yhat=sigmoid(Z)
代码实现:
def sigmoid(x):
return 1 / (1 + np.exp(-x))
def forward(x,w,b):
assert(w.shape[1] == x.shape[0])
z = np.dot(w,x) + b
yhat = sigmoid(z)
return yhat
损失函数:
E i n = 1 N L ( y , y h a t ) = 1 N ( − y l o g ( y h a t ) − ( 1 − y ) l o g ( 1 − y h a t ) ) {E_{in}} = \frac{1}{N}L(y,yhat) = \frac{1}{N}( - ylog(yhat) - (1 - y)log(1 - yhat)) Ein=N1L(y,yhat)=N