【c2w1】- 吴恩达深度学习作业

【c2w1】- 吴恩达深度学习作业

1.Initialization

1-zero 初始化

2-随机初始化

3-He 初始化
2 dimension of the previous layer \sqrt{\frac{2}{\text{dimension of the previous layer}}} dimension of the previous layer2

'''
1.不同的初始化导致不同结果
2.初始化的值不要太大
3.he 初始化和ReLU激活函数一起表现的很好
4.随机初始化用于打破对称性,并确保不同的隐藏单元可以学习不同的东西
---------------------------------------------------------------------------------
 
'''
# zero初始化
parameters['W' + str(l)] = np.zeros((layers_dims[l],layers_dims[l-1]))
# 随机初始化
parameters['W' + str(l)] = np.random.randn(layers_dims[l], layers_dims[l - 1]) * 10
# he 初始化
parameters['W' + str(l)] = np.random.randn(layers_dims[l], layers_dims[l - 1]) * np.sqrt(2 / layers_dims[l - 1])

2.Regularization

1.L2 regularization

lamba 是一个超参数

L2 正则使得边界更加平滑,如果 lamba 过大也可能“过平滑”

L2 依赖的假设是——具有小权重的模型比具有大权重的模型更简单,因此可以通过惩罚代价函数中权重的平方值,可以将所有权重驱动为更小的值

$\color{Red}在加入L2 正则的反向传播过程中也需要加入 正则项 \frac{d}{dW} ( \frac{1}{2}\frac{\lambda}{m} W^2) = \frac{\lambda}{m} W $

2.Dropout

'''前向传播过程中使用drop'''
D1 = np.random.rand(3,2)  # Step 1: 初始化矩阵 D1 = np.random.rand(,)
D1 = D1 < keep_prob       # Step 2: 将矩阵D1 转化为0 or 1 (keep_prob 作为阈值)
A1 = A1 * D1              # Step 3: 关闭 A1 的一些神经元
A1 = A1 / keep_prob       # Step 4: 缩放未关闭的神经元
'''--------------------------------------------------------------------------------------反向传播
'''
 dA2 = dA2 * D2           # Step 1: 关闭与前向传播相同的神经元
 dA2 = dA2 / keep_prob    # Step 2: 缩放未关闭的神经元
  • 仅 在 训 练 中 使 用 \color{Red}仅在训练中使用 使
  • 代价函数不再被明确定义

3.Gradient Checking(未完成)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值