一、Deeplearning-assignment
这一节作业的重点是理解各个正则化方法的原理,以及它们的优缺点,而不是去注重算法实现的具体末节。
问题陈述:希望你通过一个数据集训练一个合适的模型,从而帮助推荐法国守门员应该踢球的位置,这样法国队的球员可以用头打。法国过去10场比赛中的二维数据集如下:
每个点对应于法国守门员在足球场左侧击球之后,其他运动员用头将球击中的足球场上的位置。
- 如果这个点是蓝色的,这意味着这个法国球员设法用他/她的头击球
- 如果这个点是红色的,这意味着另一个队的球员用头撞球
你的目标:使用深度学习模式来找到守门员踢球的场地。
分析数据集:这个数据集有点杂乱,但貌似可以用一条对角线能区分开左上角(蓝色)与右下角(红色)的数据,效果还不错。
在本次作业中将会首先尝试一个非正则化的模型。然后学习如何正规化,并决定选择哪种模式来解决法国足球公司的问题。
二、相关算法代码
1.非正规化模型
def model(X, Y, learning_rate=0.3, num_iterations=30000, print_cost=True, lambd=0, keep_prob=1):
"""
:param X:input data, of shape (input size, number of examples)
:param Y:true "label" vector (1 for blue dot / 0 for red dot), of shape (output size, number of examples)
:param learning_rate:learning rate of the optimization
:param num_iterations:number of iterations of the optimization loop
:param print_cost:If True, print the cost every 10000 iterations
:param lambd:regularization hyperparameter, scalar
:param keep_prob:probability of keeping a neuron active during drop-out, scalar.
:return:parameters -- parameters learned by the model. They can then be used to predict.
"""
grads = {}
costs = [] # to keep track of the cost
m = X.shape[1] # number of examples is 211
layers_dims = [X.shape[0], 20, 3, 1]
parameters = initialize_parameters(layers_dims)
for i in range(0, num_iterations):
if keep_prob == 1:
a3, cache = forward_propagation(X, parameters)
elif keep_prob < 1:
a3, cache = forward_propagation_with_dropout(X, parameters, keep_prob)
if lambd == 0:
cost = compute_cost(a3, Y)
else:
cost = compute_cost_with_regularization(a3, Y, parameters, lambd)
assert (lambd == 0 or keep_prob == 1)
if lambd == 0 and keep_prob == 1:
grads = backward_propagation(X, Y, cache)
elif lambd !=