在写系统时候遇到一个问题:模仿的版本在测试阶段,把所有权重乘以一个保留概率(做法1)。而GJH他看的Keras里面测试阶段什么都不做(做法2),所以比较好奇,怎么做法不同?
但是随手搜了几个中文博客,都是按做法1来的,训练阶段按保留概率随机生成一个保留矩阵(元素要么0-丢弃,要么1-保留),然后测试阶段所有权重乘以保留概率。
在回头看TensorFlow的Dropout函数https://www.tensorflow.org/api_docs/python/tf/nn/dropout,怎么涉及一个scale操作,懵了:
With probability keep_prob, outputs the input element scaled up by 1 / keep_prob, otherwise outputs 0. The scaling is so that the expected sum is unchanged.