tensorflow中的dropout是怎么實現的?


1 #調用dropout函數
2 import tensorflow as tf
3 a = tf.Variable([1.0,2.0,3.0,4.5])
4 sess = tf.Session()
5 init_op = tf.global_variables_initializer()
6 sess.run(init_op)
7 a = tf.nn.dropout(a, 0.5)
8 print(sess.run(a))
打印結果:[2. 0. 6. 0.]

閱讀了tensorflow的代碼,dropout的實現如下

 1 #舉個例子
 2 import numpy as np
 3 a = np.array([[1,2,3,4.5]])
 4 keep_prop = 0.5
 5 uniform_data = np.random.uniform(0.0, 1.0, 4)
 6 print("uniform_data:", uniform_data)
 7 binary_data = np.floor(keep_prop + uniform_data)
 8 print("binary:", binary_data)
 9 a = (a/keep_prop)*binary_data
10 print("after dropout:", a)
 
        
打印結果:
uniform_data: [0.67023007 0.35026259 0.66169766 0.25046903]
binary: [1. 0. 1. 0.]
after dropout: [[2. 0. 6. 0.]]
keep_prop的范圍[0, 1),該值越大,a中每個數據被保留的概率越大。由於使用了隨機均勻分布函數生成隨機數,所以dropout生成的數據不是唯一的,即每次刪除隨機位置的神經元。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM