1.准备工作
主要任务:
构架你的第一个神经网络,它只有一个隐藏层,你将会看到这个模型和使用逻辑回归模型的很大不同。
你将会学到:
1.操作2值分类器
2.使用非线性激活函数
3.计算交叉熵损失
4.操作前向和后向传播
2.数据集
加载数据集,将二分类数据集加载成变量X,Y
X, Y = load_planar_dataset()
红色(label y=0)蓝色(label y=1)
使用matplotlib实现数据可视化
注:数组X包含了特征值,数组Y包含了标签。
3.简单的逻辑回归
首先运行已经写好的逻辑回归分类器查看精确度:
最终获取的精确度47%,可见精确度还很低为后续优化做准备。产生这样结果的原因是数据集不是线性可分的,所以逻辑回归表现并不好。
4.神经网络模型
如图所示,这是一个简单的只含有一个隐藏层的神经网络模型。
难点在于前后向传播使用的计算公式:
其中 i 表示第几个样本。
给出所有样本的预测就可以计算总成本:
注:构建一个神经网络的基本方法:
1.构建网络结构
2.初始化模型参数
3.操作前向传播——计算损失——操作后向传播——获取梯度——更新模型参数
分步构建模型,再将每个步骤融合到一个函数中,完成构建后就可以对新数据进行评估。
4.1定义神经网络结构
# GRADED FUNCTION: layer_sizes
def layer_sizes(X, Y):
"""
Arguments:
X -- input dataset of shape (input size, number of examples)
Y -- labels of shape (output size, number of examples)
Returns:
n_x -- the size of the input layer
n_h -- the size of the hidden layer
n_y -- the size of the output layer
"""
### START CODE HERE ### (≈ 3 lines of code)
# size of input layer
n_x = X.shape[0]
n_h = 4
n_y = Y.shape[0]
# size of output layer
### END CODE HERE ###
return (n_x, n_h, n_y)
X_assess, Y_assess = layer_sizes_test_case()
(n_x, n_h, n_y) = layer_sizes(X_assess, Y_assess)
print("The size of the input layer is: n_x = " + str(n_x))
print("The size of the hidden layer is: n_h = " + str(n_h))
print("The size of the output layer is: n_y = " + str(n_y))
运行结果: