cs231n 部分代码解释

由于记性不大好,所以还是边学习边整理吧

dropout(随机失活) p值更高 = 随机失活更弱

# -*-coding:utf-8-*-   **#添加这一句话,可以是pycharm打印出来中文**
import numpy as np
import random
import matplotlib.pyplot as plt

p = 0.1

h1 = np.array([[1,1.25,2.87],[2,0.36,0.24]])
u1 = np.random.rand(*h1.shape) < p 
#每一个神经元随机失活的概率,这里是0.1的话说明失活的概率是0.9,False的概率变高
#这里使用×h.shape是因为rand里面只能输入整数,×就转化为integer
print u1

打印结果:(可以明显的看出来False概率比较高,因为设置是0.1,所以False概率是0.9;如果设置为0.9,那么True概率是0.1)
第一次
[[False False True]
[False False False]]
第二次
[[False False True]
[False False False]]
第三次
[[False False False]
[False False False]]

如果使用随机失活,那么predict函数中激活函数必须乘以p

def predict(X):
  # 前向传播时模型集成
  H1 = np.maximum(0, np.dot(W1, X) + b1) * p # 注意:激活数据要乘以p
  H2 = np.maximum(0, np.dot(W2, H1) + b2) * p # 注意:激活数据要乘以p
  out = np.dot(W3, H2) + b3

反向随机失活(inverted dropout),它是在训练时就进行数值范围调整,从而让前向传播在测试时保持不变。-----效果好

反向随机失活
U1 = (np.random.rand(*H1.shape) < p) / p # 第一个随机失活遮罩. 注意/p!

def predict(X):
  # 前向传播时模型集成
  H1 = np.maximum(0, np.dot(W1, X) + b1) # 不用数值范围调整了
  H2 = np.maximum(0, np.dot(W2, H1) + b2)
  out = np.dot(W3, H2) + b3
预测函数
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值