文章分為兩部分。第壹部分介紹tensorflow中的dropout函數,第二部分是我的思考。
先看官方函數定義:
輸入是:
輸出是:
那我們來看看官方API是怎麽說這個函數的:
註意,輸出的非零元素是原來“1/keep_prob”的倍數!說到這裏,這裏有壹個程序示例:
操作的結果如下:
分析運行結果:
分析完特點,總結壹下,退學這個概念看起來好高大上,但是在程序中實現起來又是那麽簡單!tensorflow中的dropout說白了就是讓輸入張量中的壹些元素變成0,其他沒變0的元素變成原來的大小1/keep_prob!
首先引用這篇博文:
然後,我自己嘗試了壹下,看看在壹個小網絡裏,退學的效果是怎樣的。程序片段如下:
網絡很簡單,形似784-30-10的網絡,但在輸出層之前做了丟包處理。訓練數據是MNIST的手寫數據集,妳猜怎麽著?使用dropout後,訓練準確率不升反降。後來我把網絡的隱層改成100個神經元,結果還是壹樣。看來我的人脈還是太小了。就像上面博客說的,退學如果用不好,真的是壹種負擔!