1 # coding:utf-8 2 import numpy as np 3 4 # dropout函数的实现 5 def dropout(x, level): 6 if level < 0. or level >= 1: #level是概率值,必须在0~1之间 7 raise ValueError('Dropout level must be in interval [0, 1[.') 8 retain_prob = 1. - level#level是失活的概率 9 10 # 我们通过binomial函数,生成与x一样的维数向量。binomial函数就像抛硬币一样,我们可以把每个神经元当做抛硬币一样 11 # 硬币 正面的概率为p(为1的概率是p,也就是不失活的概率为p),n表示每个神经元试验的次数 12 # 因为我们每个神经元只需要抛一次就可以了所以n=1,size参数是我们有多少个硬币。 13 random_tensor = np.random.binomial(n=1, p=retain_prob, size=x.shape) #即将生成一个0、1分布的向量,0表示这个神经元被屏蔽,不工作了,也就是dropout了 14 print(random_tensor) 15 16 x *= random_tensor 17 print(x) 18 x /= retain_prob#我们要保持预测输出和训练输出基本相同因此要除以不失活的概率 19 20 return x 21 22 #对dropout的测试,大家可以跑一下上面的函数,了解一个输入x向量,经过dropout的结果 23 x=np.asarray([1,2,3,4,5,6,7,8,9,10],dtype=np.float32) 24 dropout(x,0.4)
深度学习中Dropout原理解析 - 知乎 (zhihu.com)
标签:概率,level,Dropout,random,程序,np,dropout From: https://www.cnblogs.com/Sandals-little/p/17713879.html