深度学习:dropout和BN的实现
生活随笔
收集整理的這篇文章主要介紹了
深度学习:dropout和BN的实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- dropout
- BN
dropout
dropout可以看成是正則化,也可以看成是ensemble
class Dropout(SubLayer):# self._prob:訓練過程中每個神經元被“留下”的概率def __init__(self, parent, shape, drop_prob=0.5):if drop_prob < 0 or drop_prob >= 1:raise ValueError("(Dropout) Probability of Dropout should be a positive float smaller than 1")SubLayer.__init__(self, parent, shape)# 被“留下”的概率自然是1-被Drop的概率self._prob = tf.constant(1-drop_prob, dtype=tf.float32)self.description = "(Drop prob: {})".format(drop_prob)def _activate(self, x, predict):# 如果是在訓練過程,那么就按照設定的、被“留下”的概率進行Dropoutif not predict:return tf.nn.dropout(x, self._prop) # 如果是在預測過程,那么直接返回輸入值即可return xBN
簡單地將每層得到的數據進行上述歸一化操作顯然是不可行的、因為這樣會破壞掉每層自身學到的數據特征。為了使得中心化之后不破壞 Layer 本身學到的特征、BN 采取了一個簡單卻十分有效的方法:引入兩個可以學習的“重構參數”以期望能夠從中心化的數據重構出 Layer 本身學到的特征。
總結
以上是生活随笔為你收集整理的深度学习:dropout和BN的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python学习:装饰器使用,timei
- 下一篇: 深度学习:卷积层的实现