【无标题】

定义神经网络结构

1. 定义神经网络结构

import numpy as np

def layer_sizes(X,Y):
n_x=X.shape[0]
n_h=4
n_y=Y.shape[0]

return (n_x,n_h,n_y)

print(“=测试layer_sizes”)
X_asses,Y_asses=layer_sizes_test_case()
(n_x,n_h,n_y)=layer_sizes(X_asses,Y_asses)

print("输入层的结点数量为:n_x= "+str(n_x))
print(“隐藏层的节点数量为:n_h=” +str(n_h))
print(“输出层的节点数量为:n_y=” +str(n_y))

def initialize_parameters(n_x,n_h,n_y):
np.random.seed(2)
W1=np.random.randn(n_h,n_x)*0.01
b1=np.zeros(shape=(n_h,1))
W2=np.random.randn(n_y,n_h)*0.01
b2=np.zeros(shape=(n_y,1))

parameters={"W1":W1,"b1":b1,"W2":W2,"b2":b2}

return parameters

def forward_propagation(X,parameters):
W1=parameters[“W1”]
b1=parameters[“b1”]
W2=parameters[“W2”]
b2=parameters[“b2”]

Z1=np.dot(W1,X)+b1
A1=np.tanh(Z1)
Z2=np.dot(W2,A1)+b2
A2=sigmoid(Z2)

def compute_cost(A2,Y,parameters):
m=Y.shape[1]
W1=parameters[“W1”]
W2=parameters[“W2”]

logprobs=logprobs=np.multiply(np.log(A2),Y)+np.multiply(((1-Y),np.log(1-A2)))
cost=-np.sum(logprobs)/m
cost=float(np.squeeze(cost))
assert(isinstance(cost,float))
return cost

def backward_propagation(parameters,cache,X,Y):
m=X.shape[1]
W1=parameters[“W1”]
W2=parameters[“W2”]
A1=cache[“A1”]
A2=cache[“A2”]
dZ2=A2-Y
dW2=(1/m)*np.dot(dZ2,A1.T)
db2=(1/m)*np.sum(dZ2,axis=1,keepdims=True)
dZ1=np.multiply(np.dot(W2.T,dZ2),1-np.power(A1,2))
dW1=(1/m)*np.dot(dZ1,X.T)
db1=(1/m)*np.sum(dZ1,axis=1,keepdims=True)

grads={"dW1":dW1,
       "db1":db1,
        "dW2":dW2,
        "db2":db2}

return grads
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热爱技术的小曹

你的鼓励是我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值