本文是我基于对https://blog.csdn.net/u013733326/article/details/79639509的理解完成的,也就是吴恩达老师的第一个编程作业
要识别猫的话,我们要构建的一个神经网络需要达到的功能是:
输入一张猫的图片,然后输入一个概率,即这张图片是猫的概率
# 算法框架:
# 我们的最终目的是学习w和b,而学习w和b实际就是优化w和b,
# 优化w和b的方法就是梯度下降
# 梯度下降要用到的参数是w, b, X, Y, num_iterations, learning_rate
import numpy as np
from lr_utils import load_dataset
import matplotlib.pyplot as plt
def sigmoid(z):# 此函数没问题
s = 1 / (1 + np.exp(-z))
return s
# 传播函数(包括正向传播和反向传播)
def propagate(m, w, b, X, Y):
# 正向传播
z = np.dot(w.T, X) + b
a = sigmoid(z)
cost = (-1 / m) * np.sum(Y * np.log(a) + (1 - Y) * np.log(1 - a))
cost = np.squeeze(cost)
assert (cost.shape ==