Course 2 week 1 :权重初始化 & 正则化 & 梯度校验

目录

点击回顾本周课堂笔记

一、权重初始化

1.数据和模型

2.权重初始化为0

3.随机初始化

4.sqrt(2 / n[l - 1])初始化

5.总结

二、正则化

1.数据

​2.不使用正则化

3.使用正则化

3.1 L2正则化

3.2 dropout

三、梯度校验

1.一维线性模型的梯度检查

​2.高维线性模型的梯度检查


点击回顾本周课堂笔记

一、权重初始化

1.数据和模型

相关代码:

train_X, train_Y, test_X, test_Y = init_utils.load_dataset(is_plot=True)

load_dataset()中的数据可视化代码:

if is_plot:
    plt.scatter(train_X[:, 0], train_X[:, 1],c=train_Y,s=40,cmap=plt.cm.Spectral)
    plt.show()

运行结果: 

Course 2 week 1 :权重初始化 & 正则化 & 梯度校验_第1张图片

模型

实现一个三层的神经网络:LINEAR ->RELU -> LINEAR -> RELU -> LINEAR -> SIGMOID。

迭代的次数为15000,每迭代1000次打印一次成本值

开始学习的核心代码:

    for i in range(0, num_iterations):
        # 前向传播
        a3, cache = init_utils.forward_propagation(X, parameters)

        # 计算成本
        cost = init_utils.compute_loss(a3, Y)

        # 反向传播
        grads = init_utils.backward_propagation(X, Y, cache)

        # 更新参数
        parameters = init_utils.update_parameters(parameters, grads, learning_rate)

        # 记录成本
        if i % 1000 == 0:
            costs.append(cost)
            # 打印成本
            if print_cost:
                print("第" + str(i) + "次迭代,成本值为:" + str(cost))

实验方案

以下三种初始化都只对W进行处理,b不做处理(即b都为0初始化)。通过分析权重参数值、预测结果、学习率、分类性能等实验结果获得结论。

2.权重初始化为0

相关代码:

parameters = model(train_X, train_Y, initialization = "zeros",is_polt=True)

initialize_parameters_zeros(layers_dims) 中的零初始化语句:

parameters["W" + str(l)] = np.zeros((layers_dims[l], layers_dims[l - 1]))
parameters["b" + str(l)] = np.zeros((layers_dims[l], 1))

运行结果:

Course 2 week 1 :权重初始化 & 正则化 & 梯度校验_第2张图片Course 2 week 1 :权重初始化 & 正则化 & 梯度校验_第3张图片

Course 2 week 1 :权重初始化 & 正则化 & 梯度校验_第4张图片

Course 2 week 1 :权重初始化 & 正则化 & 梯度校验_第5张图片

Course 2 week 1 :权重初始化 & 正则化 & 梯度校验_第6张图片

Course 2 week 1 :权重初始化 & 正则化 & 梯度校验_第7张图片

你可能感兴趣的:(深度学习,python,机器学习)