deeplearning.ai 总结 - Planar data classification with a hidden layer
flyfish
Planar data classification with a hidden layer
使用一个隐藏层进行平面数据分类
主要是使用了以下包
numpy 是 用Python进行科学计算的基础包。
sklearn 为数据挖掘和数据分析提供简单高效的工具。
matplotlib 绘制图形库
testCases提供了一些测试样本来评估函数的正确性
planar_utils 提供了在这个作业中需要使用的各种有用的函数
关于图
matrix X包含 特性 x1,x2
vector Y包含标签 red:0,blue1
目标:数据看起来像一朵花,8个花瓣 ,一些红色 (标签 y=0) 和一些蓝色 (y=1) 点组成。
我们做的就是建立一个模型来分类这些数据
加载数据查看数据的shape
先是使用 Simple Logistic Regression 简单的逻辑回归进行分类
主要是Python库sklearn
分类的结果不是十分理想
神经网络模型
定义神经网络的结构(Defining the neural network structure)
def layer_sizes(X, Y):
n_x 表示输入层的大小
n_h 表示 隐藏层的大小 这里是4
n_y 表示输出层的大小
初始化模型的参数Initialize the model’s parameters
W1 – 权重矩阵1的shape (n_h, n_x)
b1 – 偏置向量1的shape (n_h, 1)
W2 – 权重矩阵1的shape (n_y, n_h)
b2 – 偏置向量2的shape (n_y, 1)
权重由np.random.randn初始化
偏置由 np.zeros 初始化
前向传播(forward_propagation)
反向传播(backward_propagation)
需要用的6个公式
dZ2 = A2- Y
dW2 = (1/m)*np.dot(dZ2, A1.T)
db2 = (1/m)*np.sum(dZ2,axis=1,keepdims=True)
dZ1 = 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)
更新参数(update_parameters)
W = W- learning_rate*dW
最后是整合部分(nn_model)
initialize_parameters
for 循环执行
forward_propagation
cost =compute_cost
grads = backward_propagation
parameters=update_parameters
移除长度为1的轴
Remove single-dimensional entries from the shape of an array.
x = np.array([[[0], [1], [2]]])
print(x)
#[[[0]
# [1]
# [2]]]
print(x.shape)#(1, 3, 1)
print(np.squeeze(x, axis=0).shape)#(3, 1)
print(np.squeeze(x, axis=2).shape)#(1, 3)
print(np.squeeze(x).shape)#(3,)
correctness [kə’rɛktnɪs]
n. 正确性
squeeze [skwiːz]
vt. 挤;紧握;勒索
vi. 压榨
n. 压榨;紧握;拥挤;佣金