您的位置:首页 > 编程语言

吴恩达第一课logistic Regress编程练习(学习笔记)

2017-11-07 21:31 369 查看
目标:利用logisitic Regression来预测图片是否有猫咪,即简单的二分类问题。

过程:初始化(向量输入,归一化),前向和反向传播,梯度下降,优化,预测,输出与可视化

初始化:1.明确输入集数量;测试集数量dim;

    2.输入向量化n*n*nc;

A trick when you want to flatten a matrix X of shape (a,b,c,d) to a matrix X_flatten of shape (b ∗∗ c ∗∗ d, a) is to use:
X_flatten = X.reshape(X.shape[0], -1).T # X.T is the transpose of X
    3.确定batch-size,输入归一化,压缩到【0,1】之间,便于计算。

    4.初始化权值、偏差

w = np.zeros((dim, 1))
b = 0

前向与反向传播:

       1.激活函数sigmoid

       2.z = w.T * X + b

       3.激活函数sigmoid

       4.损失函数cost = -y*log(pred_y) -(1-y)*log(1-pred_y)

A = sigmoid(np.dot(w.T, X) + b) # compute activation
cost = -1/m * np.sum((Y*np.log(A) + (1-Y)*np.log(1-A))) # compute cost

反向传播梯度下降:根据链式法则有:损失函数对w的偏导为(a-y)*X,损失函数对b的偏导为(a-y)

dw = np.dot(X, (A - Y).T)/m
db = np.sum(A - Y)/m
优化(多次迭代):

w = w - learning_rate*dw

预测:
将新的输入与模型参数运算得到结果Pred-y,若大于0.5则输出1,反之输出0

模型整合:

1.初始化参数;2.正反向传播;3.优化;4.预测;5.打印显示与绘图可视化

超参数调试:

尝试不同的学习速率、batch-size和迭代次数,观察训练和测试准确率问题。

What you need to remember:

Common steps for pre-processing a new dataset are:

Figure out the dimensions and shapes of the problem (m_train, m_test, num_px, ...)
Reshape the datasets such that each example is now a vector of size (num_px * num_px * 3, 1)
"Standardize" the data

What to remember: You've implemented several functions that:

Initialize (w,b)Optimize the loss iteratively to learn parameters (w,b):
computing the cost and its gradient
updating the parameters using gradient descent
Use the learned (w,b) to predict the labels for a given set of examples

What to remember from this assignment:

Preprocessing the dataset is important.You implemented each function separately: initialize(), propagate(), optimize(). Then you built a model().Tuning the learning rate (which is an example of a "hyperparameter") can make a big difference to the algorithm. You will see more examples of this later in this course!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息