本文最后更新于386 天前,其中的信息可能已经过时,如有错误请发送邮件到1910452164@qq.com
主要操作:
1.定义一个d矩阵,用来规定随机忽略部分神经元
d3 = np.random.rand(a3.shape[0],a3.shape[1]) < keep_prob
// keep_prob是一个具体数字,介于(0,1),表示保留任何一个节点的概率,不同层的keep_prob可能不同
需要注意的是,如果一个隐藏层的W矩阵的参数越多,那么它的过拟合的风险就越大,因此该层对应的keep_prob值应该越小一些。这个思路有点类似处理L2正则化里面的λ。
2.获取激活函数
a3 =np.multiply(a3,d3)
// d3是一个布尔矩阵,与a3相乘后随机使a3中的部分元素变为0
3.向外拓展
a3 /= keep_prob
// 维持a3的方差,该部分就是所谓的dropout方法